use crate::rust::Var;
use crate::{CodeBuffer, Expression};
pub trait WithVarParams: Sized {
fn params(&self) -> &[Var];
fn add_param<V>(&mut self, param: V)
where
V: Into<Var>;
#[must_use]
fn with_param<V>(mut self, param: V) -> Self
where
V: Into<Var>,
{
self.add_param(param);
self
}
fn write_params(&self, b: &mut CodeBuffer) {
if let Some((first, rest)) = self.params().split_first() {
first.write(b);
for param in rest {
b.write(", ");
param.write(b);
}
}
}
}