pub trait FromStr: Sized {
type Err;
// Required method
fn from_str(s: &str) -> Result<Self, Self::Err>;
}
Expand description
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;
#[derive(Debug, PartialEq)]
struct Point {
x: i32,
y: i32
}
#[derive(Debug, PartialEq, Eq)]
struct ParsePointError;
impl FromStr for Point {
type Err = ParsePointError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let (x, y) = s
.strip_prefix('(')
.and_then(|s| s.strip_suffix(')'))
.and_then(|s| s.split_once(','))
.ok_or(ParsePointError)?;
let x_fromstr = x.parse::<i32>().map_err(|_| ParsePointError)?;
let y_fromstr = y.parse::<i32>().map_err(|_| ParsePointError)?;
Ok(Point { x: x_fromstr, y: y_fromstr })
}
}
let expected = Ok(Point { x: 1, y: 2 });
// Explicit call
assert_eq!(Point::from_str("(1,2)"), expected);
// Implicit calls, through parse
assert_eq!("(1,2)".parse(), expected);
assert_eq!("(1,2)".parse::<Point>(), expected);
// Invalid input string
assert!(Point::from_str("(1 2)").is_err());
Required Associated Types§
Required Methods§
sourcefn from_str(s: &str) -> Result<Self, Self::Err>
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 the 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);
Object Safety§
Implementors§
source§impl FromStr for SocketAddr
impl FromStr for SocketAddr
type Err = AddrParseError
1.5.0 · source§impl FromStr for SocketAddrV4
impl FromStr for SocketAddrV4
type Err = AddrParseError
1.5.0 · source§impl FromStr for SocketAddrV6
impl FromStr for SocketAddrV6
type Err = AddrParseError
1.35.0 · source§impl FromStr for NonZeroI16
impl FromStr for NonZeroI16
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroI32
impl FromStr for NonZeroI32
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroI64
impl FromStr for NonZeroI64
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroI128
impl FromStr for NonZeroI128
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroIsize
impl FromStr for NonZeroIsize
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroU16
impl FromStr for NonZeroU16
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroU32
impl FromStr for NonZeroU32
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroU64
impl FromStr for NonZeroU64
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroU128
impl FromStr for NonZeroU128
type Err = ParseIntError
1.35.0 · source§impl FromStr for NonZeroUsize
impl FromStr for NonZeroUsize
type Err = ParseIntError
source§impl<const RMIN: i8, const RMAX: i8> FromStr for NonRangeI8<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i8, const RMAX: i8> FromStr for NonRangeI8<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i8, const RMAX: i8> FromStr for RangeI8<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i8, const RMAX: i8> FromStr for RangeI8<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i16, const RMAX: i16> FromStr for NonRangeI16<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i16, const RMAX: i16> FromStr for NonRangeI16<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i16, const RMAX: i16> FromStr for RangeI16<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i16, const RMAX: i16> FromStr for RangeI16<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i32, const RMAX: i32> FromStr for NonRangeI32<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i32, const RMAX: i32> FromStr for NonRangeI32<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i32, const RMAX: i32> FromStr for RangeI32<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i32, const RMAX: i32> FromStr for RangeI32<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i64, const RMAX: i64> FromStr for NonRangeI64<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i64, const RMAX: i64> FromStr for NonRangeI64<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i64, const RMAX: i64> FromStr for RangeI64<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i64, const RMAX: i64> FromStr for RangeI64<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i128, const RMAX: i128> FromStr for NonRangeI128<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i128, const RMAX: i128> FromStr for NonRangeI128<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: i128, const RMAX: i128> FromStr for RangeI128<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: i128, const RMAX: i128> FromStr for RangeI128<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: isize, const RMAX: isize> FromStr for NonRangeIsize<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: isize, const RMAX: isize> FromStr for NonRangeIsize<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: isize, const RMAX: isize> FromStr for RangeIsize<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: isize, const RMAX: isize> FromStr for RangeIsize<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u8, const RMAX: u8> FromStr for NonRangeU8<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u8, const RMAX: u8> FromStr for NonRangeU8<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u8, const RMAX: u8> FromStr for RangeU8<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u8, const RMAX: u8> FromStr for RangeU8<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u16, const RMAX: u16> FromStr for NonRangeU16<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u16, const RMAX: u16> FromStr for NonRangeU16<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u16, const RMAX: u16> FromStr for RangeU16<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u16, const RMAX: u16> FromStr for RangeU16<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u32, const RMAX: u32> FromStr for NonRangeU32<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u32, const RMAX: u32> FromStr for NonRangeU32<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u32, const RMAX: u32> FromStr for RangeU32<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u32, const RMAX: u32> FromStr for RangeU32<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u64, const RMAX: u64> FromStr for NonRangeU64<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u64, const RMAX: u64> FromStr for NonRangeU64<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u64, const RMAX: u64> FromStr for RangeU64<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u64, const RMAX: u64> FromStr for RangeU64<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u128, const RMAX: u128> FromStr for NonRangeU128<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u128, const RMAX: u128> FromStr for NonRangeU128<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: u128, const RMAX: u128> FromStr for RangeU128<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: u128, const RMAX: u128> FromStr for RangeU128<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: usize, const RMAX: usize> FromStr for NonRangeUsize<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: usize, const RMAX: usize> FromStr for NonRangeUsize<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const RMIN: usize, const RMAX: usize> FromStr for RangeUsize<RMIN, RMAX>
Available on crate feature num
only.
impl<const RMIN: usize, const RMAX: usize> FromStr for RangeUsize<RMIN, RMAX>
num
only.type Err = ParseIntError
source§impl<const V: i8> FromStr for NonSpecificI8<V>
Available on crate feature num
only.
impl<const V: i8> FromStr for NonSpecificI8<V>
num
only.type Err = ParseIntError
source§impl<const V: i16> FromStr for NonSpecificI16<V>
Available on crate feature num
only.
impl<const V: i16> FromStr for NonSpecificI16<V>
num
only.type Err = ParseIntError
source§impl<const V: i32> FromStr for NonSpecificI32<V>
Available on crate feature num
only.
impl<const V: i32> FromStr for NonSpecificI32<V>
num
only.type Err = ParseIntError
source§impl<const V: i64> FromStr for NonSpecificI64<V>
Available on crate feature num
only.
impl<const V: i64> FromStr for NonSpecificI64<V>
num
only.type Err = ParseIntError
source§impl<const V: i128> FromStr for NonSpecificI128<V>
Available on crate feature num
only.
impl<const V: i128> FromStr for NonSpecificI128<V>
num
only.type Err = ParseIntError
source§impl<const V: isize> FromStr for NonSpecificIsize<V>
Available on crate feature num
only.
impl<const V: isize> FromStr for NonSpecificIsize<V>
num
only.type Err = ParseIntError
source§impl<const V: u8> FromStr for NonSpecificU8<V>
Available on crate feature num
only.
impl<const V: u8> FromStr for NonSpecificU8<V>
num
only.type Err = ParseIntError
source§impl<const V: u16> FromStr for NonSpecificU16<V>
Available on crate feature num
only.
impl<const V: u16> FromStr for NonSpecificU16<V>
num
only.type Err = ParseIntError
source§impl<const V: u32> FromStr for NonSpecificU32<V>
Available on crate feature num
only.
impl<const V: u32> FromStr for NonSpecificU32<V>
num
only.type Err = ParseIntError
source§impl<const V: u64> FromStr for NonSpecificU64<V>
Available on crate feature num
only.
impl<const V: u64> FromStr for NonSpecificU64<V>
num
only.type Err = ParseIntError
source§impl<const V: u128> FromStr for NonSpecificU128<V>
Available on crate feature num
only.
impl<const V: u128> FromStr for NonSpecificU128<V>
num
only.type Err = ParseIntError
source§impl<const V: usize> FromStr for NonSpecificUsize<V>
Available on crate feature num
only.
impl<const V: usize> FromStr for NonSpecificUsize<V>
num
only.