In previous examples, we've seen what appeared to be calls to functions that were contained within data values, such as "127.0.0.1:12345".parse() or ["Hello", "world", "of", "loops"].iter(). Those are functions that have been implemented on the type of those values. Implementing functions on a type looks like this:
impl Constrained {
pub fn set(&mut self, value: i32) {
self.current = value;
}
pub fn get(&self) -> i32 {
if self.current < self.min {
return self.min;
}
else if self.current > self.max {
return self.max;
}
else {
return self.current;
};
}
}
This is an implementation block (which is not a block expression) for a data type, in this case the Constrained type that we created...