code_gen/rust/var/
var_init.rs

1use crate::rust::{Var, WithVar};
2use crate::{CodeBuffer, Expression, Statement};
3
4/// A variable initialization statement.
5pub struct VarInit {
6    var: Var,
7    expression: Box<dyn Expression>,
8}
9
10impl WithVar for VarInit {
11    fn var(&self) -> &Var {
12        &self.var
13    }
14}
15
16impl<V: Into<Var>, E: 'static + Expression> From<(V, E)> for VarInit {
17    fn from(t: (V, E)) -> Self {
18        Self {
19            var: t.0.into(),
20            expression: Box::new(t.1),
21        }
22    }
23}
24
25impl Statement for VarInit {
26    fn write(&self, b: &mut CodeBuffer, level: usize) {
27        b.indent(level);
28        b.write("let ");
29        self.write_var(b);
30        b.write(" = ");
31        self.expression.write(b);
32        b.write(";");
33        b.end_line();
34    }
35}