ruru icon indicating copy to clipboard operation
ruru copied to clipboard

Moving vs borrowing

Open d-unsed opened this issue 8 years ago • 1 comments

Consider the following example:

let string = RString::new("Some string");
let mut array = Array::new();

// Moves `string` into `array` similarly to `vec.push()` in Rust
array.push(string);

// ... `string` cannot be used, because it's moved

vs

string = 'Some string'
array = []

# Takes a reference of the `string`
array.push(string)

# `string` can be used
string.concat(" mutated")

array.inspect # => ['Some string mutated']

It needs to be decided whether to take objects references (Ruby way) or by values (Rust way).

d-unsed avatar Jan 10 '17 17:01 d-unsed

I think having the Rust way is preferable. We can manage the context of ownership like we normally would in Rust. We can let each language behave in their own way and this won't lead to surprises. I like being able to define the ownership in my own programs.

Ruby internally has most objects act as CoW.

danielpclark avatar Feb 01 '18 02:02 danielpclark