ruru
ruru copied to clipboard
Change conversion methods to take objects by values
The following methods should take self by value, because technically they return the same Ruby
objects converted to another Rust type.
-
[ ]
Object::toObject::to<T: Object>(&self) -> Tchanges to
Object::convert_into<T: Object>(self) -> T -
[ ]
Object::try_convert_toObject::try_convert_to<T: VerifiedObject>(&self) -> Result<T>changes to
Object::try_convert_into<T: VerifiedObject>(self) -> Result<T> -
[ ]
Object::to_any_object()Object::to_any_object(&self) -> AnyObjectchanges to
Object::into_any_object(&self) -> AnyObject
For example:
let fixnum = some_object.try_convert_into::<Fixnum>();
some_object should be consumed by convert_into, because fixnum and some_object correspond to the same object in Ruby.
Just curious about the Object::try_convert_into<T: VerifiedObject>(self) -> Result<T> scenario. Would taking ownership be bad in this case when the type isn't what you try for the first time? If the result is an Err(Error) because it's a different type the ownership would already be consumed… right?
@danielpclark The usual workaround is returning the original value as part of the error.