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::to
Object::to<T: Object>(&self) -> T
changes to
Object::convert_into<T: Object>(self) -> T
-
[ ]
Object::try_convert_to
Object::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) -> AnyObject
changes 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.