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§
1.0.0 · 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 LevelFilter
impl FromStr for LevelFilter
type Err = ParseLevelError
source§impl FromStr for Month
impl FromStr for Month
Returns a Month
from a string containing either the full month name,
or any of the month ASCII abbreviations.
source§impl FromStr for Weekday
impl FromStr for Weekday
Returns a Weekday
from a string containing either the full weekday name,
or any of the weekday ASCII abbreviations.
1.0.0 · 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
source§impl<const RMIN: i8, const RMAX: i8> FromStr for InRangeI8<RMIN, RMAX>
Available on crate feature _in_range_i8
only.
impl<const RMIN: i8, const RMAX: i8> FromStr for InRangeI8<RMIN, RMAX>
_in_range_i8
only.type Err = ParseIntError
source§impl<const RMIN: i8, const RMAX: i8> FromStr for NonRangeI8<RMIN, RMAX>
Available on crate feature _non_range_i8
only.
impl<const RMIN: i8, const RMAX: i8> FromStr for NonRangeI8<RMIN, RMAX>
_non_range_i8
only.type Err = ParseIntError
source§impl<const RMIN: i16, const RMAX: i16> FromStr for InRangeI16<RMIN, RMAX>
Available on crate feature _in_range_i16
only.
impl<const RMIN: i16, const RMAX: i16> FromStr for InRangeI16<RMIN, RMAX>
_in_range_i16
only.type Err = ParseIntError
source§impl<const RMIN: i16, const RMAX: i16> FromStr for NonRangeI16<RMIN, RMAX>
Available on crate feature _non_range_i16
only.
impl<const RMIN: i16, const RMAX: i16> FromStr for NonRangeI16<RMIN, RMAX>
_non_range_i16
only.type Err = ParseIntError
source§impl<const RMIN: i32, const RMAX: i32> FromStr for InRangeI32<RMIN, RMAX>
Available on crate feature _in_range_i32
only.
impl<const RMIN: i32, const RMAX: i32> FromStr for InRangeI32<RMIN, RMAX>
_in_range_i32
only.type Err = ParseIntError
source§impl<const RMIN: i32, const RMAX: i32> FromStr for NonRangeI32<RMIN, RMAX>
Available on crate feature _non_range_i32
only.
impl<const RMIN: i32, const RMAX: i32> FromStr for NonRangeI32<RMIN, RMAX>
_non_range_i32
only.type Err = ParseIntError
source§impl<const RMIN: i64, const RMAX: i64> FromStr for InRangeI64<RMIN, RMAX>
Available on crate feature _in_range_i64
only.
impl<const RMIN: i64, const RMAX: i64> FromStr for InRangeI64<RMIN, RMAX>
_in_range_i64
only.type Err = ParseIntError
source§impl<const RMIN: i64, const RMAX: i64> FromStr for NonRangeI64<RMIN, RMAX>
Available on crate feature _non_range_i64
only.
impl<const RMIN: i64, const RMAX: i64> FromStr for NonRangeI64<RMIN, RMAX>
_non_range_i64
only.type Err = ParseIntError
source§impl<const RMIN: i128, const RMAX: i128> FromStr for InRangeI128<RMIN, RMAX>
Available on crate feature _in_range_i128
only.
impl<const RMIN: i128, const RMAX: i128> FromStr for InRangeI128<RMIN, RMAX>
_in_range_i128
only.type Err = ParseIntError
source§impl<const RMIN: i128, const RMAX: i128> FromStr for NonRangeI128<RMIN, RMAX>
Available on crate feature _non_range_i128
only.
impl<const RMIN: i128, const RMAX: i128> FromStr for NonRangeI128<RMIN, RMAX>
_non_range_i128
only.type Err = ParseIntError
source§impl<const RMIN: isize, const RMAX: isize> FromStr for InRangeIsize<RMIN, RMAX>
Available on crate feature _in_range_isize
only.
impl<const RMIN: isize, const RMAX: isize> FromStr for InRangeIsize<RMIN, RMAX>
_in_range_isize
only.type Err = ParseIntError
source§impl<const RMIN: isize, const RMAX: isize> FromStr for NonRangeIsize<RMIN, RMAX>
Available on crate feature _non_range_isize
only.
impl<const RMIN: isize, const RMAX: isize> FromStr for NonRangeIsize<RMIN, RMAX>
_non_range_isize
only.type Err = ParseIntError
source§impl<const RMIN: u8, const RMAX: u8> FromStr for InRangeU8<RMIN, RMAX>
Available on crate feature _in_range_u8
only.
impl<const RMIN: u8, const RMAX: u8> FromStr for InRangeU8<RMIN, RMAX>
_in_range_u8
only.type Err = ParseIntError
source§impl<const RMIN: u8, const RMAX: u8> FromStr for NonRangeU8<RMIN, RMAX>
Available on crate feature _non_range_u8
only.
impl<const RMIN: u8, const RMAX: u8> FromStr for NonRangeU8<RMIN, RMAX>
_non_range_u8
only.type Err = ParseIntError
source§impl<const RMIN: u16, const RMAX: u16> FromStr for InRangeU16<RMIN, RMAX>
Available on crate feature _in_range_u16
only.
impl<const RMIN: u16, const RMAX: u16> FromStr for InRangeU16<RMIN, RMAX>
_in_range_u16
only.type Err = ParseIntError
source§impl<const RMIN: u16, const RMAX: u16> FromStr for NonRangeU16<RMIN, RMAX>
Available on crate feature _non_range_u16
only.
impl<const RMIN: u16, const RMAX: u16> FromStr for NonRangeU16<RMIN, RMAX>
_non_range_u16
only.type Err = ParseIntError
source§impl<const RMIN: u32, const RMAX: u32> FromStr for InRangeU32<RMIN, RMAX>
Available on crate feature _in_range_u32
only.
impl<const RMIN: u32, const RMAX: u32> FromStr for InRangeU32<RMIN, RMAX>
_in_range_u32
only.type Err = ParseIntError
source§impl<const RMIN: u32, const RMAX: u32> FromStr for NonRangeU32<RMIN, RMAX>
Available on crate feature _non_range_u32
only.
impl<const RMIN: u32, const RMAX: u32> FromStr for NonRangeU32<RMIN, RMAX>
_non_range_u32
only.type Err = ParseIntError
source§impl<const RMIN: u64, const RMAX: u64> FromStr for InRangeU64<RMIN, RMAX>
Available on crate feature _in_range_u64
only.
impl<const RMIN: u64, const RMAX: u64> FromStr for InRangeU64<RMIN, RMAX>
_in_range_u64
only.type Err = ParseIntError
source§impl<const RMIN: u64, const RMAX: u64> FromStr for NonRangeU64<RMIN, RMAX>
Available on crate feature _non_range_u64
only.
impl<const RMIN: u64, const RMAX: u64> FromStr for NonRangeU64<RMIN, RMAX>
_non_range_u64
only.type Err = ParseIntError
source§impl<const RMIN: u128, const RMAX: u128> FromStr for InRangeU128<RMIN, RMAX>
Available on crate feature _in_range_u128
only.
impl<const RMIN: u128, const RMAX: u128> FromStr for InRangeU128<RMIN, RMAX>
_in_range_u128
only.type Err = ParseIntError
source§impl<const RMIN: u128, const RMAX: u128> FromStr for NonRangeU128<RMIN, RMAX>
Available on crate feature _non_range_u128
only.
impl<const RMIN: u128, const RMAX: u128> FromStr for NonRangeU128<RMIN, RMAX>
_non_range_u128
only.type Err = ParseIntError
source§impl<const RMIN: usize, const RMAX: usize> FromStr for InRangeUsize<RMIN, RMAX>
Available on crate feature _in_range_usize
only.
impl<const RMIN: usize, const RMAX: usize> FromStr for InRangeUsize<RMIN, RMAX>
_in_range_usize
only.type Err = ParseIntError
source§impl<const RMIN: usize, const RMAX: usize> FromStr for NonRangeUsize<RMIN, RMAX>
Available on crate feature _non_range_usize
only.
impl<const RMIN: usize, const RMAX: usize> FromStr for NonRangeUsize<RMIN, RMAX>
_non_range_usize
only.type Err = ParseIntError
source§impl<const V: i8> FromStr for NonValueI8<V>
Available on crate feature _non_value_i8
only.
impl<const V: i8> FromStr for NonValueI8<V>
_non_value_i8
only.type Err = ParseIntError
source§impl<const V: i16> FromStr for NonValueI16<V>
Available on crate feature _non_value_i16
only.
impl<const V: i16> FromStr for NonValueI16<V>
_non_value_i16
only.type Err = ParseIntError
source§impl<const V: i32> FromStr for NonValueI32<V>
Available on crate feature _non_value_i32
only.
impl<const V: i32> FromStr for NonValueI32<V>
_non_value_i32
only.type Err = ParseIntError
source§impl<const V: i64> FromStr for NonValueI64<V>
Available on crate feature _non_value_i64
only.
impl<const V: i64> FromStr for NonValueI64<V>
_non_value_i64
only.type Err = ParseIntError
source§impl<const V: i128> FromStr for NonValueI128<V>
Available on crate feature _non_value_i128
only.
impl<const V: i128> FromStr for NonValueI128<V>
_non_value_i128
only.type Err = ParseIntError
source§impl<const V: isize> FromStr for NonValueIsize<V>
Available on crate feature _non_value_isize
only.
impl<const V: isize> FromStr for NonValueIsize<V>
_non_value_isize
only.type Err = ParseIntError
source§impl<const V: u8> FromStr for NonValueU8<V>
Available on crate feature _non_value_u8
only.
impl<const V: u8> FromStr for NonValueU8<V>
_non_value_u8
only.type Err = ParseIntError
source§impl<const V: u16> FromStr for NonValueU16<V>
Available on crate feature _non_value_u16
only.
impl<const V: u16> FromStr for NonValueU16<V>
_non_value_u16
only.type Err = ParseIntError
source§impl<const V: u32> FromStr for NonValueU32<V>
Available on crate feature _non_value_u32
only.
impl<const V: u32> FromStr for NonValueU32<V>
_non_value_u32
only.type Err = ParseIntError
source§impl<const V: u64> FromStr for NonValueU64<V>
Available on crate feature _non_value_u64
only.
impl<const V: u64> FromStr for NonValueU64<V>
_non_value_u64
only.type Err = ParseIntError
source§impl<const V: u128> FromStr for NonValueU128<V>
Available on crate feature _non_value_u128
only.
impl<const V: u128> FromStr for NonValueU128<V>
_non_value_u128
only.type Err = ParseIntError
source§impl<const V: usize> FromStr for NonValueUsize<V>
Available on crate feature _non_value_usize
only.
impl<const V: usize> FromStr for NonValueUsize<V>
_non_value_usize
only.