January 2018
Beginner to intermediate
454 pages
10h 8m
English
Instead of taking &mut every time, we'll directly take the object's ownership every time:
struct Number(u32);
impl Number {
fn new(nb: u32) -> Number {
Number(nb)
}
fn add(mut self, other: u32) -> Number {
self.0 += other;
self
}
fn sub(mut self, other: u32) -> Number {
self.0 -= other;
self
}
}
Then, there's no more need for the ending method:
let nb = Number::new(0).add(10).sub(5).add(12); assert_eq!(nb.0, 17);
I generally prefer this way of doing builder patterns but it's more of a personal opinion than a thoughtful decision. Pick whichever seems to fit the best in your situation!