claps 0.2.0

CLIs written in Rust
Documentation
use serde::Deserialize;

#[derive(Debug, Deserialize)]
pub struct Folder {
    pub id: String,
    pub name: String,
}

#[derive(Debug, Deserialize)]
#[serde(untagged)]
pub enum Item {
    Login(Login),
    SecureNote(SecureNote),
}

#[derive(Debug, Deserialize)]
pub struct Login {
    pub name: String,
    pub notes: Option<String>,
    pub login: LoginLogin,
}

#[derive(Debug, Deserialize)]
pub struct LoginLogin {
    pub username: Option<String>,
    pub password: Option<String>,
}

#[derive(Debug, Deserialize)]
pub struct SecureNote {
    pub name: String,
    pub notes: String,
}

impl Item {
    pub fn name(&self) -> &str {
        match self {
            Item::Login(login) => &login.name,
            Item::SecureNote(secure_note) => &secure_note.name,
        }
    }

    pub fn notes(&self) -> Option<&str> {
        match self {
            Item::Login(login) => login.notes.as_deref(),
            Item::SecureNote(secure_note) => Some(&secure_note.notes),
        }
    }
}