builder_api/
builder_api.rs

1use derive_wizard::Wizard;
2
3#[derive(Debug, Clone, Wizard)]
4struct ServerConfig {
5    #[prompt("Server host:")]
6    host: String,
7
8    #[prompt("Server port:")]
9    #[min(1024)]
10    #[max(65535)]
11    port: i32,
12
13    #[prompt("Enable SSL:")]
14    ssl: bool,
15}
16
17fn main() {
18    println!("=== Builder API Demo ===\n");
19
20    // Example 1: Simple builder with default backend
21    println!("Example 1: Using default backend");
22    let config1 = ServerConfig::wizard_builder().build();
23    println!("Config: {:#?}\n", config1);
24
25    // Example 2: Builder with custom backend (dialoguer)
26    #[cfg(feature = "dialoguer-backend")]
27    {
28        println!("Example 2: Using dialoguer backend");
29        let backend = derive_wizard::DialoguerBackend::new();
30        let config2 = ServerConfig::builder().with_backend(backend).build();
31        println!("Config: {:#?}\n", config2);
32    }
33
34    // Example 3: Builder with defaults
35    println!("Example 3: Using defaults (re-prompting with existing values)");
36    let defaults = ServerConfig {
37        host: "localhost".to_string(),
38        port: 8080,
39        ssl: true,
40    };
41    let config3 = ServerConfig::wizard_builder()
42        .with_defaults(defaults)
43        .build();
44    println!("Config: {:#?}\n", config3);
45}