To receive borrowed data, we need to properly specify the data type as a borrow. That is done by using & or &mut with the data type on the receiving end, just as we used them with the data value on the sending end.
While the term borrow is common in Rust, the technical term is reference. So, we will usually say we are borrowing data, using borrowed data, or that a data value is accessed as a borrow, but we could also say that we are referencing data, using referenced data, or that a data value is accessed by reference.
Here, we have the definition of two functions, the same two functions we used in our previous examples. Look at the data types specified for the point parameter on each one:
pub fn borrow_ownership(point: &Point2D) {
println!("Point2D{{x: {}, y: {}}} is now borrowed by a new scope", point.x, point.y);
}
pub fn borrow_ownership_mutably...