FromStr trait 与 ToString trait

FromStr trait

从字符串转为指定的类型, 只需要给这个类型实现了 FromStr trait.

#![allow(unused)]
fn main() {
trait FromStr: Sized {
  type Err;
  fn from_str(s: &str) -> Result<Self, Self::Err>;
}
}

比如说, 字符串转为整数, 字符串转为 IPv4Addr:

impl FromStr for Ipv4Addr {
    type Err = AddrParseError;
    fn from_str(s: &str) -> Result<Ipv4Addr, AddrParseError> {
        Self::parse_ascii(s.as_bytes())
    }
}

ToString trait

std::fmt::Display trait, 在将其它类型转为字符串时, 还可以对其进行格式化.

通常我们不直接为自定义类实现 ToString trait, 而是实现 Display trait, 后者会自动 实现 ToString trait.

#![allow(unused)]
fn main() {
trait ToString {
  fn to_string(&self) -> String;
}
}