ʰ
Size: a a a
ʰ
ʰ
ʰ
ʰ
S[
impl Stmt {
fn run<'a>(self, mut state: HashMap<String, i32>,
mut input: Option<&'a [i32]>,
mut output: Vec<i32>) -> (
HashMap<String, i32>,
Option<&'a [i32]>,
Vec<i32>
) {
match self {
Stmt::Skip => (),
Stmt::Read (s) => {
state.insert(s, input.expect("No values in input")[0]);
input = input.unwrap().get(1..);
},
Stmt::Write (e) => output.push(e.eval(&state)),
Stmt::Assign (s, e) => { state.insert(s, e.eval(&state)); } ,
Stmt::Seq (l, r) => {
(state, input, output) = l.run(state, input, output);
(state, input, output) = r.run(state, input, output);
}
}
(state, input, output)
}
}
impl Stmt {
fn run(self, state: &mut HashMap<String, i32>, input: &[i32], output: &mut Vec<i32>) {
match self {
Stmt::Skip => (),
Stmt::Read(s) => {
state.insert(s, input[0]);
}
Stmt::Write(e) => output.push(e.eval(&state)),
Stmt::Assign(s, e) => {
state.insert(s, e.eval(&state));
}
Stmt::Seq(l, r) => {
l.run(state, input, output);
r.run(state, input, output);
}
}
}
}
ʰ
ʰ
ʰ
ʰ
ʰ
impl Stmt {
fn run(self, state: &mut HashMap<String, i32>, input: &[i32], output: &mut Vec<i32>) {
match self {
Stmt::Skip => (),
Stmt::Read(s) => {
state.insert(s, input[0]);
}
Stmt::Write(e) => output.push(e.eval(&state)),
Stmt::Assign(s, e) => {
state.insert(s, e.eval(&state));
}
Stmt::Seq(l, r) => {
l.run(state, input, output);
r.run(state, input, output);
}
}
}
}
ʰ
ʰ
ʰ
ʰ
ʰ
ʰ
ʰ
ʰ