passphrase_config/passphrase_config.rs
1//! Passphrase generation with basic configuration
2//!
3//! This example shows how to use the [`BasicConfig`](config::BasicConfig) structure for
4//! configuring how passphrases should be generated. See the [`BasicConfig`](config::BasicConfig)
5//! documentation for all available options.
6//!
7//! Other configuration structures are available in the [`config`](config) module.
8//! You may build your own configuration structure with support for converting it into a
9//! [`Scheme`](scheme::Scheme) by implementing the [`ToScheme`](scheme::ToScheme) trait.
10//!
11//! Note that this example prints the generated passphrase in the console,
12//! which might not be desired in most situations.
13
14use chbs::{config::BasicConfig, prelude::*, probability::Probability};
15
16fn main() {
17 // Build a custom configuration to:
18 // - use hyphens as separator
19 // - sometimes capitalizes whole passphrase words
20 // - sometimes capitalizes the first characters of passphrase words
21 // TODO: use the builder instead
22 // let config = BasicConfigBuilder::default()
23 // .separator("-")
24 // .capitalize_first(Probability::from(0.33))
25 // .capitalize_words(Probability::half())
26 // .build()
27 // .unwrap();
28 let mut config = BasicConfig::default();
29 config.words = 8;
30 config.separator = "-".into();
31 config.capitalize_first = Probability::from(0.33);
32 config.capitalize_words = Probability::half();
33
34 let scheme = config.to_scheme();
35
36 println!("Passphrase: {:?}", scheme.generate());
37 println!("Entropy: {:?}", scheme.entropy().bits());
38}