MCPcopy Index your code
hub / github.com/bedroombuilds/python2rust / main

Function main

29_pattern_matching_revisited/rust/pattern/src/main.rs:72–108  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

70}
71
72fn main() {
73 let mut current_room = Room::new(vec!["banana", "chair", "piano"].into_iter());
74 let mut character = Character::new();
75 let valid_chants = vec!["team", "wildcats"];
76
77 let stdin = io::stdin();
78 loop {
79 print!("What are you doing next? ");
80 io::stdout().flush().unwrap();
81 let mut command = String::new();
82 stdin.lock().read_line(&mut command).unwrap();
83 let elems: Vec<&str> = command.split_whitespace().collect();
84 println!("{:?}", &elems);
85 match &elems[..] {
86 ["quit"] => {
87 println!("Good bye!");
88 break;
89 }
90 ["look"] => current_room.describe(),
91 ["look", "backpack"] => println!("in backpack {:?}", character.backpack),
92 ["take", obj] => character.take(obj.to_string(), &mut current_room),
93 ["drop", objects @ ..] => {
94 for obj in objects {
95 character.drop(obj.to_string(), &mut current_room);
96 }
97 }
98 ["go", direction] => current_room = current_room.neighbor(direction),
99 ["go", direction @ ("north" | "south" | "east" | "west")] => {
100 current_room = current_room.neighbor(direction)
101 }
102 ["go", chant] if valid_chants.contains(chant) => {
103 println!("YEAH, GOOOOO {}", chant.to_uppercase())
104 }
105 _ => println!("dunno"),
106 }
107 }
108}

Callers

nothing calls this directly

Calls 5

read_lineMethod · 0.80
describeMethod · 0.45
takeMethod · 0.45
dropMethod · 0.45
neighborMethod · 0.45

Tested by

no test coverage detected