Borrowing allows you to access a value without taking ownership. This is done through references, which come in two forms: immutable and mutable. Rust’s borrowing rules ensure that data races and other concurrency issues are avoided.
fn main() {
let s = String::from("hello");
let len = calculate_length(&s); // borrow s immutably
println!("The length of '{}' is {}.", s, len); // s is still valid
}
fn calculate_length(s: &String) -> usize {
s.len()
}