code_gen/rust/var/
with_var_params.rs

1use crate::rust::Var;
2use crate::{CodeBuffer, Expression};
3
4/// An element with variable parameters.
5pub trait WithVarParams: Sized {
6    /// Gets the parameters.
7    fn params(&self) -> &[Var];
8
9    /// Adds the parameter.
10    fn add_param<V>(&mut self, param: V)
11    where
12        V: Into<Var>;
13
14    /// Adds the parameter.
15    fn with_param<V>(mut self, param: V) -> Self
16    where
17        V: Into<Var>,
18    {
19        self.add_param(param);
20        self
21    }
22
23    /// Writes the parameters.
24    fn write_params(&self, b: &mut CodeBuffer) {
25        if let Some((first, rest)) = self.params().split_first() {
26            first.write(b);
27            for param in rest {
28                b.write(", ");
29                param.write(b);
30            }
31        }
32    }
33}