Trait no_std_compat::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§

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

impl<const CAP: usize> FromStr for ArrayString<CAP>

impl<'a> FromStr for Oid<'a>

impl FromStr for Hash

impl FromStr for Hash

impl FromStr for Hash

impl FromStr for Hash

impl FromStr for Midstate

impl FromStr for Hash

impl FromStr for Hash

impl FromStr for Hash

impl FromStr for Hash

impl<T: Tag> FromStr for Hash<T>

impl<T: Hash + FromStr> FromStr for Hmac<T>

impl FromStr for ByteSize

impl FromStr for Endian

impl FromStr for Month

impl FromStr for Weekday

impl FromStr for DateTime<Utc>

impl<const S: usize> FromStr for Cid<S>

impl FromStr for FloatCC

impl FromStr for IntCC

impl FromStr for LibCall

impl FromStr for TrapCode

impl FromStr for Opcode

impl FromStr for CallConv

impl FromStr for OptLevel

impl FromStr for TlsModel

impl FromStr for Ieee32

impl FromStr for Ieee64

impl FromStr for Imm64

impl FromStr for Offset32

impl FromStr for Uimm32

impl FromStr for Uimm64

impl FromStr for TagMode

impl FromStr for DateTime

impl<const MIN: i128, const MAX: i128> FromStr for RangedI128<MIN, MAX>

impl<const MIN: i16, const MAX: i16> FromStr for RangedI16<MIN, MAX>

impl<const MIN: i32, const MAX: i32> FromStr for RangedI32<MIN, MAX>

impl<const MIN: i64, const MAX: i64> FromStr for RangedI64<MIN, MAX>

impl<const MIN: i8, const MAX: i8> FromStr for RangedI8<MIN, MAX>

impl<const MIN: isize, const MAX: isize> FromStr for RangedIsize<MIN, MAX>

impl<const MIN: u128, const MAX: u128> FromStr for RangedU128<MIN, MAX>

impl<const MIN: u16, const MAX: u16> FromStr for RangedU16<MIN, MAX>

impl<const MIN: u32, const MAX: u32> FromStr for RangedU32<MIN, MAX>

impl<const MIN: u64, const MAX: u64> FromStr for RangedU64<MIN, MAX>

impl<const MIN: u8, const MAX: u8> FromStr for RangedU8<MIN, MAX>

impl<const MIN: usize, const MAX: usize> FromStr for RangedUsize<MIN, MAX>

impl<C> FromStr for NonZeroScalar<C>
where C: CurveArithmetic,

impl<C> FromStr for ScalarPrimitive<C>
where C: Curve,

impl FromStr for Protocol

impl FromStr for Select

impl FromStr for DNSClass

impl FromStr for Name

impl FromStr for A

impl FromStr for AAAA

impl FromStr for Method

impl FromStr for Scheme

impl FromStr for Uri

impl FromStr for HttpDate

impl FromStr for Duration

impl FromStr for Name

impl FromStr for IpNet

impl FromStr for Ipv4Net

impl FromStr for Ipv6Net

impl FromStr for BigInt

impl FromStr for JsString

impl FromStr for Number

impl FromStr for PeerId

impl FromStr for PeerId

impl FromStr for Level

impl FromStr for Pattern

impl FromStr for Signal

impl FromStr for BigInt

impl FromStr for BigUint

impl FromStr for Locale

impl<T: FromStr> FromStr for NumberPrefix<T>

impl<T: Float + FromStr> FromStr for NotNan<T>

impl<T: Float + FromStr> FromStr for OrderedFloat<T>

impl FromStr for LogIcon

impl FromStr for Mnemonic

impl FromStr for Output

impl FromStr for H128

impl FromStr for H160

impl FromStr for H256

impl FromStr for H384

impl FromStr for H512

impl FromStr for H768

impl FromStr for U128

impl FromStr for U256

impl FromStr for U512

impl FromStr for Literal

impl FromStr for Regex

impl FromStr for Regex

impl FromStr for ScopedIp

impl FromStr for Cors

impl FromStr for PeerId

impl<Size> FromStr for EncodedPoint<Size>
where Size: ModulusSize,

impl FromStr for Keypair

impl FromStr for Value

impl FromStr for Number

impl FromStr for DHChoice

impl FromStr for FixedI64

impl FromStr for FixedU64

impl FromStr for Bytes

impl FromStr for Public

impl<const N: usize, SubTag> FromStr for PublicBytes<N, SubTag>
where Self: CryptoType,

impl FromStr for Keyring

impl FromStr for Vendor

impl FromStr for Triple

impl FromStr for Month

impl FromStr for Weekday

impl FromStr for Value

impl FromStr for Datetime

impl FromStr for Level

impl FromStr for Targets

impl FromStr for DNSClass

impl FromStr for Name

impl FromStr for A

impl FromStr for AAAA

impl FromStr for Runtime

impl FromStr for Url