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;
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 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);
Required Associated Types
Required Methods
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);
Implementors
sourceimpl FromStr for SocketAddr
impl FromStr for SocketAddr
type Err = AddrParseError
1.7.0 · sourceimpl FromStr for IpAddr
impl FromStr for IpAddr
type Err = AddrParseError
sourceimpl FromStr for bool
impl FromStr for bool
type Err = ParseBoolError
1.20.0 · sourceimpl FromStr for char
impl FromStr for char
type Err = ParseCharError
sourceimpl FromStr for f32
impl FromStr for f32
type Err = ParseFloatError
sourceimpl FromStr for f64
impl FromStr for f64
type Err = ParseFloatError
sourceimpl FromStr for i8
impl FromStr for i8
type Err = ParseIntError
sourceimpl FromStr for i16
impl FromStr for i16
type Err = ParseIntError
sourceimpl FromStr for i32
impl FromStr for i32
type Err = ParseIntError
sourceimpl FromStr for i64
impl FromStr for i64
type Err = ParseIntError
sourceimpl FromStr for i128
impl FromStr for i128
type Err = ParseIntError
sourceimpl FromStr for isize
impl FromStr for isize
type Err = ParseIntError
sourceimpl FromStr for u8
impl FromStr for u8
type Err = ParseIntError
sourceimpl FromStr for u16
impl FromStr for u16
type Err = ParseIntError
sourceimpl FromStr for u32
impl FromStr for u32
type Err = ParseIntError
sourceimpl FromStr for u64
impl FromStr for u64
type Err = ParseIntError
sourceimpl FromStr for u128
impl FromStr for u128
type Err = ParseIntError
sourceimpl FromStr for usize
impl FromStr for usize
type Err = ParseIntError
sourceimpl FromStr for LitByteStr
impl FromStr for LitByteStr
sourceimpl FromStr for String
impl FromStr for String
type Err = Infallible
1.35.0 · sourceimpl FromStr for NonZeroI8
impl FromStr for NonZeroI8
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI16
impl FromStr for NonZeroI16
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI32
impl FromStr for NonZeroI32
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI64
impl FromStr for NonZeroI64
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI128
impl FromStr for NonZeroI128
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroIsize
impl FromStr for NonZeroIsize
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU8
impl FromStr for NonZeroU8
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU16
impl FromStr for NonZeroU16
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU32
impl FromStr for NonZeroU32
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU64
impl FromStr for NonZeroU64
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU128
impl FromStr for NonZeroU128
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroUsize
impl FromStr for NonZeroUsize
type Err = ParseIntError
1.54.0 · sourceimpl FromStr for proc_macro::Literal
impl FromStr for proc_macro::Literal
Parse a single literal from its stringified representation.
In order to parse successfully, the input string must not contain anything but the literal token. Specifically, it must not contain whitespace or comments in addition to the literal.
The resulting literal token will have a Span::call_site()
span.
NOTE: some errors may cause panics instead of returning LexError
. We
reserve the right to change these errors into LexError
s later.
1.15.0 · sourceimpl FromStr for proc_macro::TokenStream
impl FromStr for proc_macro::TokenStream
Attempts to break the string into tokens and parse those tokens into a token stream.
May fail for a number of reasons, for example, if the string contains unbalanced delimiters
or characters not existing in the language.
All tokens in the parsed stream get Span::call_site()
spans.
NOTE: some errors may cause panics instead of returning LexError
. We reserve the right to
change these errors into LexError
s later.
1.45.0 · sourceimpl FromStr for OsString
impl FromStr for OsString
type Err = Infallible
1.5.0 · sourceimpl FromStr for SocketAddrV4
impl FromStr for SocketAddrV4
type Err = AddrParseError
1.5.0 · sourceimpl FromStr for SocketAddrV6
impl FromStr for SocketAddrV6
type Err = AddrParseError
sourceimpl FromStr for Ipv4Addr
impl FromStr for Ipv4Addr
type Err = AddrParseError
sourceimpl FromStr for Ipv6Addr
impl FromStr for Ipv6Addr
type Err = AddrParseError
1.32.0 · sourceimpl FromStr for PathBuf
impl FromStr for PathBuf
type Err = Infallible
sourceimpl FromStr for parsel::TokenStream
impl FromStr for parsel::TokenStream
Attempts to break the string into tokens and parse those tokens into a token stream.
May fail for a number of reasons, for example, if the string contains unbalanced delimiters or characters not existing in the language.
NOTE: Some errors may cause panics instead of returning LexError
. We
reserve the right to change these errors into LexError
s later.