1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/// Implicit conversion or `nil`.
///
/// This is meant for “implicit conversions” much like Ruby's:
///
/// * `Array.try_convert`
/// * `Hash.try_convert`
/// * `String.try_convert`
/// * `Regexp.try_convert`
/// * `IO.try_convert`
///
/// This is NOT Rust object to Rust object casting for Ruby objects like `try_convert_to<T>` is.
pub trait TryConvert<T>: Sized {
/// The type returned in the event of a conversion error.
type Nil;
/// Performs the conversion.
fn try_convert(value: T) -> Result<Self, Self::Nil>;
}