builder_api/
builder_api.rs1use 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 println!("Example 1: Using default backend");
22 let config1 = ServerConfig::wizard_builder().build();
23 println!("Config: {:#?}\n", config1);
24
25 #[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 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}