diff --git a/src/ch15-05-interior-mutability.md b/src/ch15-05-interior-mutability.md index c730d02bf3..f43d549244 100644 --- a/src/ch15-05-interior-mutability.md +++ b/src/ch15-05-interior-mutability.md @@ -195,7 +195,7 @@ implement a mock object to do just that, but the borrow checker won’t allow it Filename: src/lib.rs -```rust,does_not_compile +```rust,ignore,does_not_compile #[cfg(test)] mod tests { use super::*; @@ -275,6 +275,41 @@ shows what that looks like: Filename: src/lib.rs ```rust +# pub trait Messenger { +# fn send(&self, msg: &str); +# } +# +# pub struct LimitTracker<'a, T: Messenger> { +# messenger: &'a T, +# value: usize, +# max: usize, +# } +# +# impl<'a, T> LimitTracker<'a, T> +# where T: Messenger { +# pub fn new(messenger: &T, max: usize) -> LimitTracker { +# LimitTracker { +# messenger, +# value: 0, +# max, +# } +# } +# +# pub fn set_value(&mut self, value: usize) { +# self.value = value; +# +# let percentage_of_max = self.value as f64 / self.max as f64; +# +# if percentage_of_max >= 1.0 { +# self.messenger.send("Error: You are over your quota!"); +# } else if percentage_of_max >= 0.9 { +# self.messenger.send("Urgent warning: You've used up over 90% of your quota!"); +# } else if percentage_of_max >= 0.75 { +# self.messenger.send("Warning: You've used up over 75% of your quota!"); +# } +# } +# } +# #[cfg(test)] mod tests { use super::*; @@ -306,6 +341,7 @@ mod tests { assert_eq!(mock_messenger.sent_messages.borrow().len(), 1); } } +# fn main() {} ``` Listing 15-22: Using `RefCell` to mutate an inner