TryFrom and TryInto

Similar to From and Into, TryFrom and TryInto are generic traits for converting between types. Unlike From/Into, the TryFrom/TryInto traits are used for fallible conversions, and as such, return Results.

use std::convert::TryFrom;

use std::convert::TryInto;

#[derive(Debug, PartialEq)]

struct EvenNumber(i32);

impl TryFrom for EvenNumber {

type Error = ();

fn try_from(value: i32) -> Result {

if value % 2 == 0 {

Ok(EvenNumber(value))

} else {

Err(())

}

}

}

fn main() {

// TryFrom

assert_eq!(EvenNumber::try_from(8), Ok(EvenNumber(8)));

assert_eq!(EvenNumber::try_from(5), Err(()));

// TryInto

let result: Result = 8i32.try_into();

assert_eq!(result, Ok(EvenNumber(8)));

let result: Result = 5i32.try_into();

assert_eq!(result, Err(()));

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Загрузка...