readme_example/
readme-example.rs1pub struct ProgramState {
6 number: i32,
7 text: String,
8}
9
10impl ProgramState {
11 pub fn poke(&mut self, args: &str) {
12 self.text = format!("{}: {}", args, self.number);
13 }
14}
15
16impl cvar::IVisit for ProgramState {
17 fn visit(&mut self, f: &mut dyn FnMut(&mut dyn cvar::INode)) {
18 f(&mut cvar::Property("number", &mut self.number, &42));
19 f(&mut cvar::Property("text", &mut self.text, &String::new()));
20 f(&mut cvar::Action("poke!", |args, _writer| self.poke(args)));
21 }
22}
23
24fn main() {
25 let mut writer = String::new();
26
27 let mut program_state = ProgramState {
28 number: 42,
29 text: String::new(),
30 };
31
32 assert_eq!(cvar::console::get(&mut program_state, "number").unwrap(), "42");
33
34 cvar::console::set(&mut program_state, "number", "13", &mut writer);
35 assert_eq!(program_state.number, 13);
36
37 cvar::console::invoke(&mut program_state, "poke!", "the value is", &mut writer);
38 assert_eq!(program_state.text, "the value is: 13");
39}