Skip to main content

FromClient

Derive Macro FromClient 

Source
#[derive(FromClient)]
Expand description

Derive macro for implementing the FromClient trait.

See FromClient for usage details. 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())?,
        })
    }
}