diff --git a/crates/RustQuant_cashflows/src/quotes.rs b/crates/RustQuant_cashflows/src/quotes.rs index 4b138849..7bc6894d 100644 --- a/crates/RustQuant_cashflows/src/quotes.rs +++ b/crates/RustQuant_cashflows/src/quotes.rs @@ -27,10 +27,30 @@ impl SimpleQuote { SimpleQuote { value } } - /// Set the quote value. + /// Sets the value of the quote and returns the difference between the new value and the old value. + /// + /// # Arguments + /// + /// * `value` - An optional new value to set. + /// + /// # Returns + /// + /// * `f64` - The difference between the new value and the old value. If the new value is not present, + /// the difference will be 0.0. + /// + /// # Examples + /// + /// ```rust + /// use RustQuant::cashflows::SimpleQuote; + /// + /// let mut quote = SimpleQuote::new(Some(10.0)); + /// let diff = quote.set_value(Some(15.0)); + /// assert_eq!(diff, 5.0); + /// ``` pub fn set_value(&mut self, value: Option) -> f64 { let diff = match (&self.value, &value) { (Some(old_value), Some(new_value)) => new_value - old_value, + (None, Some(new_value)) => *new_value, _ => 0.0, }; @@ -43,9 +63,24 @@ impl SimpleQuote { diff } - /// Reset the quote value. + /// Resets the value of the quote to `None`. + /// + /// This method clears the current value of the quote, effectively making it invalid. + /// + /// # Examples + /// + /// ```rust + /// use RustQuant::cashflows::{Quote, SimpleQuote}; + /// + /// let mut quote = SimpleQuote::new(Some(10.0)); + /// assert!(quote.is_valid()); + /// + /// quote.reset(); + /// assert!(!quote.is_valid()); + /// assert_eq!(quote.value(), None); + /// ``` pub fn reset(&mut self) { - self.set_value(None); + self.value = None; } }