use std::fmt;
use std::fmt::Write;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, PartialOrd, Default, Serialize, Deserialize)]
pub struct Ingredient {
pub name: String,
pub amount: Option<f32>,
pub unit: Option<String>,
}
impl Ingredient {
pub fn new() -> Self {
Default::default()
}
pub fn to_string(&self) -> String {
let mut ret = String::new();
if let Some(amount) = &self.amount {
write!(ret, "{} ", amount).unwrap();
}
if let Some(unit) = &self.unit {
write!(ret, "{} ", unit).unwrap();
}
write!(ret, "{}", self.name).unwrap();
ret
}
}
impl fmt::Display for Ingredient {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.to_string())
}
}