ruru icon indicating copy to clipboard operation
ruru copied to clipboard

Change conversion methods to take objects by values

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

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.

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

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 avatar Feb 01 '18 17:02 danielpclark

@danielpclark The usual workaround is returning the original value as part of the error.

CodesInChaos avatar May 20 '18 18:05 CodesInChaos