Trait std::str::FromStr
pub trait FromStr { type Err; fn from_str(s: &str) -> Result<Self, Self::Err>; }
Parse a value from a string
FromStr
’s from_str
method is often used implicitly, through str
’s parse
method. See parse
’s documentation for examples.
FromStr
does not have a lifetime parameter, and so you can only parse types that do not contain a lifetime parameter themselves. In other words, you can parse an i32
with FromStr
, but not a &i32
. You can parse a struct that contains an i32
, but not one that contains an &i32
.
Examples
Basic implementation of FromStr
on an example Point
type:
use std::str::FromStr; use std::num::ParseIntError; #[derive(Debug, PartialEq)] struct Point { x: i32, y: i32 } impl FromStr for Point { type Err = ParseIntError; fn from_str(s: &str) -> Result<Self, Self::Err> { let coords: Vec<&str> = s.trim_matches(|p| p == '(' || p == ')' ) .split(',') .collect(); let x_fromstr = coords[0].parse::<i32>()?; let y_fromstr = coords[1].parse::<i32>()?; Ok(Point { x: x_fromstr, y: y_fromstr }) } } let p = Point::from_str("(1,2)"); assert_eq!(p.unwrap(), Point{ x: 1, y: 2} )
Associated Types
type Err
The associated error which can be returned from parsing.
Required methods
fn from_str(s: &str) -> Result<Self, Self::Err>
Parses a string s
to return a value of this type.
If parsing succeeds, return the value inside Ok
, otherwise when the string is ill-formatted return an error specific to the inside Err
. The error type is specific to implementation of the trait.
Examples
Basic usage with i32
, a type that implements FromStr
:
use std::str::FromStr; let s = "5"; let x = i32::from_str(s).unwrap(); assert_eq!(5, x);
Implementors
impl FromStr for IpAddr
type Err = AddrParseError
impl FromStr for SocketAddr
type Err = AddrParseError
impl FromStr for bool
type Err = ParseBoolError
impl FromStr for char
type Err = ParseCharError
impl FromStr for f32
type Err = ParseFloatError
impl FromStr for f64
type Err = ParseFloatError
impl FromStr for i8
type Err = ParseIntError
impl FromStr for i16
type Err = ParseIntError
impl FromStr for i32
type Err = ParseIntError
impl FromStr for i64
type Err = ParseIntError
impl FromStr for i128
type Err = ParseIntError
impl FromStr for isize
type Err = ParseIntError
impl FromStr for u8
type Err = ParseIntError
impl FromStr for u16
type Err = ParseIntError
impl FromStr for u32
type Err = ParseIntError
impl FromStr for u64
type Err = ParseIntError
impl FromStr for u128
type Err = ParseIntError
impl FromStr for usize
type Err = ParseIntError
impl FromStr for OsString
type Err = Infallible
impl FromStr for Ipv4Addr
type Err = AddrParseError
impl FromStr for Ipv6Addr
type Err = AddrParseError
impl FromStr for SocketAddrV4
type Err = AddrParseError
impl FromStr for SocketAddrV6
type Err = AddrParseError
impl FromStr for NonZeroI8
type Err = ParseIntError
impl FromStr for NonZeroI16
type Err = ParseIntError
impl FromStr for NonZeroI32
type Err = ParseIntError
impl FromStr for NonZeroI64
type Err = ParseIntError
impl FromStr for NonZeroI128
type Err = ParseIntError
impl FromStr for NonZeroIsize
type Err = ParseIntError
impl FromStr for NonZeroU8
type Err = ParseIntError
impl FromStr for NonZeroU16
type Err = ParseIntError
impl FromStr for NonZeroU32
type Err = ParseIntError
impl FromStr for NonZeroU64
type Err = ParseIntError
impl FromStr for NonZeroU128
type Err = ParseIntError
impl FromStr for NonZeroUsize
type Err = ParseIntError
impl FromStr for PathBuf
type Err = Infallible
impl FromStr for String
type Err = Infallible
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/str/trait.FromStr.html