Skip to main content

FromClient

Derive Macro FromClient 

Source
#[derive(FromClient)]
Expand description

Derive macro for implementing the FromClient trait on client structs.

This macro generates an implementation of the FromClient trait that extracts all struct fields from a Client using the FromClientPart trait.

§Example

use bitwarden_core::client::FromClient;
use bitwarden_core_macro::FromClient;

#[derive(FromClient)]
pub struct FoldersClient {
    key_store: KeyStore<KeyIds>,
    api_configurations: Arc<ApiConfigurations>,
    repository: Arc<dyn Repository<Folder>>,
}

The macro generates:

impl FromClient for FoldersClient {
    fn from_client(client: &Client) -> Result<Self, String> {
        Ok(Self {
            key_store: FromClientPart::<KeyStore<KeyIds>>::get_part(client).map_err(|e| e.to_string())?,
            api_configs: FromClientPart::<Arc<ApiConfigurations>>::get_part(client).map_err(|e| e.to_string())?,
            repository: FromClientPart::<Arc<dyn Repository<Folder>>>::get_part(client).map_err(|e| e.to_string())?,
        })
    }
}