Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 38 additions & 3 deletions crates/RustQuant_cashflows/src/quotes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>) -> 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,
};

Expand All @@ -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;
}
}

Expand Down