TryFrom
e TryInto
Semelhante ao From
e Into
, TryFrom
e TryInto
são características genéricas para converter entre tipos. Ao contrário de From
e Into
, as características TryFrom
e TryInto
são usadas para conversões falíveis, e como tal, retornam Result
.
use std::convert::TryFrom;use std::convert::TryInto;#[derive(Debug, PartialEq)]struct EvenNumber(i32);impl TryFrom<i32> for EvenNumber {type Error = ();fn try_from(value: i32) -> Result<Self, Self::Error> {if value % 2 == 0 {Ok(EvenNumber(value))} else {Err(())}}}fn main() {// TryFromassert_eq!(EvenNumber::try_from(8), Ok(EvenNumber(8)));assert_eq!(EvenNumber::try_from(5), Err(()));// TryIntolet result: Result<EvenNumber, ()> = 8i32.try_into();assert_eq!(result, Ok(EvenNumber(8)));let result: Result<EvenNumber, ()> = 5i32.try_into();assert_eq!(result, Err(()));}