Using & when passing a borrowed parameter

⚓ Rust    📅 2025-10-26    👤 surdeus    👁️ 3      

surdeus

I do not understand the difference between the following two calls in the working program below ?

add_my_size(self, rhs)
add_my_size(&self, &rhs)

struct MyUsize {
    value : usize  ,
}
fn add_my_size(left : &MyUsize, right : &MyUsize) -> MyUsize
{   MyUsize {
        value : left.value + right.value ,
    }
}
impl std::ops::Add< &MyUsize > for &MyUsize {
    type Output = MyUsize;
    fn add(self, rhs : &MyUsize) -> MyUsize {
        if self.value < rhs.value {
            add_my_size(&self, &rhs) 
        } else {
            add_my_size(self, rhs) 
        }
    }
}
fn main() {
    let one   = MyUsize{ value : 1 };
    let two   = MyUsize{ value : 2 };
    let three = &one + &two;
    println!( "&one + &two = {}", three.value);
}

2 posts - 2 participants

Read full topic

🏷️ Rust_feed