Trait devela::_libstd::str::FromStr

1.0.0 · source ·
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§

1.0.0 · source

type Err

The associated error which can be returned from parsing.

Required Methods§

1.0.0 · source

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§

This trait is not object safe.

Implementors§

source§

impl FromStr for Level

source§

impl FromStr for LevelFilter

source§

impl FromStr for Month

Returns a Month from a string containing either the full month name, or any of the month ASCII abbreviations.

§

type Err = &'static str

source§

impl FromStr for Weekday

Returns a Weekday from a string containing either the full weekday name, or any of the weekday ASCII abbreviations.

§

type Err = &'static str

1.7.0 · source§

impl FromStr for IpAddr

1.0.0 · source§

impl FromStr for SocketAddr

1.0.0 · source§

impl FromStr for bool

1.20.0 · source§

impl FromStr for char

1.0.0 · source§

impl FromStr for f32

1.0.0 · source§

impl FromStr for f64

1.0.0 · source§

impl FromStr for i8

1.0.0 · source§

impl FromStr for i16

1.0.0 · source§

impl FromStr for i32

1.0.0 · source§

impl FromStr for i64

1.0.0 · source§

impl FromStr for i128

1.0.0 · source§

impl FromStr for isize

1.0.0 · source§

impl FromStr for u8

1.0.0 · source§

impl FromStr for u16

1.0.0 · source§

impl FromStr for u32

1.0.0 · source§

impl FromStr for u64

1.0.0 · source§

impl FromStr for u128

1.0.0 · source§

impl FromStr for usize

1.45.0 · source§

impl FromStr for OsString

1.0.0 · source§

impl FromStr for Ipv4Addr

1.0.0 · source§

impl FromStr for Ipv6Addr

1.5.0 · source§

impl FromStr for SocketAddrV4

1.5.0 · source§

impl FromStr for SocketAddrV6

1.35.0 · source§

impl FromStr for NonZero<i8>

1.35.0 · source§

impl FromStr for NonZero<i16>

1.35.0 · source§

impl FromStr for NonZero<i32>

1.35.0 · source§

impl FromStr for NonZero<i64>

1.35.0 · source§

impl FromStr for NonZero<i128>

1.35.0 · source§

impl FromStr for NonZero<isize>

1.35.0 · source§

impl FromStr for NonZero<u8>

1.35.0 · source§

impl FromStr for NonZero<u16>

1.35.0 · source§

impl FromStr for NonZero<u32>

1.35.0 · source§

impl FromStr for NonZero<u64>

1.35.0 · source§

impl FromStr for NonZero<u128>

1.35.0 · source§

impl FromStr for NonZero<usize>

1.32.0 · source§

impl FromStr for PathBuf

1.0.0 · source§

impl FromStr for String

source§

impl<const RMIN: i8, const RMAX: i8> FromStr for InRangeI8<RMIN, RMAX>

Available on crate feature _in_range_i8 only.
source§

impl<const RMIN: i8, const RMAX: i8> FromStr for NonRangeI8<RMIN, RMAX>

Available on crate feature _non_range_i8 only.
source§

impl<const RMIN: i16, const RMAX: i16> FromStr for InRangeI16<RMIN, RMAX>

Available on crate feature _in_range_i16 only.
source§

impl<const RMIN: i16, const RMAX: i16> FromStr for NonRangeI16<RMIN, RMAX>

Available on crate feature _non_range_i16 only.
source§

impl<const RMIN: i32, const RMAX: i32> FromStr for InRangeI32<RMIN, RMAX>

Available on crate feature _in_range_i32 only.
source§

impl<const RMIN: i32, const RMAX: i32> FromStr for NonRangeI32<RMIN, RMAX>

Available on crate feature _non_range_i32 only.
source§

impl<const RMIN: i64, const RMAX: i64> FromStr for InRangeI64<RMIN, RMAX>

Available on crate feature _in_range_i64 only.
source§

impl<const RMIN: i64, const RMAX: i64> FromStr for NonRangeI64<RMIN, RMAX>

Available on crate feature _non_range_i64 only.
source§

impl<const RMIN: i128, const RMAX: i128> FromStr for InRangeI128<RMIN, RMAX>

Available on crate feature _in_range_i128 only.
source§

impl<const RMIN: i128, const RMAX: i128> FromStr for NonRangeI128<RMIN, RMAX>

Available on crate feature _non_range_i128 only.
source§

impl<const RMIN: isize, const RMAX: isize> FromStr for InRangeIsize<RMIN, RMAX>

Available on crate feature _in_range_isize only.
source§

impl<const RMIN: isize, const RMAX: isize> FromStr for NonRangeIsize<RMIN, RMAX>

Available on crate feature _non_range_isize only.
source§

impl<const RMIN: u8, const RMAX: u8> FromStr for InRangeU8<RMIN, RMAX>

Available on crate feature _in_range_u8 only.
source§

impl<const RMIN: u8, const RMAX: u8> FromStr for NonRangeU8<RMIN, RMAX>

Available on crate feature _non_range_u8 only.
source§

impl<const RMIN: u16, const RMAX: u16> FromStr for InRangeU16<RMIN, RMAX>

Available on crate feature _in_range_u16 only.
source§

impl<const RMIN: u16, const RMAX: u16> FromStr for NonRangeU16<RMIN, RMAX>

Available on crate feature _non_range_u16 only.
source§

impl<const RMIN: u32, const RMAX: u32> FromStr for InRangeU32<RMIN, RMAX>

Available on crate feature _in_range_u32 only.
source§

impl<const RMIN: u32, const RMAX: u32> FromStr for NonRangeU32<RMIN, RMAX>

Available on crate feature _non_range_u32 only.
source§

impl<const RMIN: u64, const RMAX: u64> FromStr for InRangeU64<RMIN, RMAX>

Available on crate feature _in_range_u64 only.
source§

impl<const RMIN: u64, const RMAX: u64> FromStr for NonRangeU64<RMIN, RMAX>

Available on crate feature _non_range_u64 only.
source§

impl<const RMIN: u128, const RMAX: u128> FromStr for InRangeU128<RMIN, RMAX>

Available on crate feature _in_range_u128 only.
source§

impl<const RMIN: u128, const RMAX: u128> FromStr for NonRangeU128<RMIN, RMAX>

Available on crate feature _non_range_u128 only.
source§

impl<const RMIN: usize, const RMAX: usize> FromStr for InRangeUsize<RMIN, RMAX>

Available on crate feature _in_range_usize only.
source§

impl<const RMIN: usize, const RMAX: usize> FromStr for NonRangeUsize<RMIN, RMAX>

Available on crate feature _non_range_usize only.
source§

impl<const V: i8> FromStr for NonValueI8<V>

Available on crate feature _non_value_i8 only.
source§

impl<const V: i16> FromStr for NonValueI16<V>

Available on crate feature _non_value_i16 only.
source§

impl<const V: i32> FromStr for NonValueI32<V>

Available on crate feature _non_value_i32 only.
source§

impl<const V: i64> FromStr for NonValueI64<V>

Available on crate feature _non_value_i64 only.
source§

impl<const V: i128> FromStr for NonValueI128<V>

Available on crate feature _non_value_i128 only.
source§

impl<const V: isize> FromStr for NonValueIsize<V>

Available on crate feature _non_value_isize only.
source§

impl<const V: u8> FromStr for NonValueU8<V>

Available on crate feature _non_value_u8 only.
source§

impl<const V: u16> FromStr for NonValueU16<V>

Available on crate feature _non_value_u16 only.
source§

impl<const V: u32> FromStr for NonValueU32<V>

Available on crate feature _non_value_u32 only.
source§

impl<const V: u64> FromStr for NonValueU64<V>

Available on crate feature _non_value_u64 only.
source§

impl<const V: u128> FromStr for NonValueU128<V>

Available on crate feature _non_value_u128 only.
source§

impl<const V: usize> FromStr for NonValueUsize<V>

Available on crate feature _non_value_usize only.