Trait sp_std::str::FromStr

1.0.0 · source ·
pub trait FromStr: Sized {
    type Err;

    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§

The associated error which can be returned from parsing.

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§

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

impl FromStr for PathBuf

impl FromStr for Hash

impl FromStr for Endian

impl FromStr for DateTime<Utc>

impl FromStr for Weekday

impl FromStr for Month

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

impl FromStr for IntCC

impl FromStr for FloatCC

impl FromStr for Imm64

impl FromStr for Uimm64

impl FromStr for Uimm32

impl FromStr for Offset32

impl FromStr for Ieee32

impl FromStr for Ieee64

impl FromStr for Opcode

impl FromStr for LibCall

impl FromStr for TrapCode

impl FromStr for CallConv

impl FromStr for OptLevel

impl FromStr for TlsModel

impl FromStr for DateTime

impl FromStr for TagMode

impl<C> FromStr for Signature<C>where
    C: PrimeCurve + ScalarArithmetic,
    SignatureSize<C>: ArrayLength<u8>,

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

impl<C> FromStr for NonZeroScalar<C>where
    C: Curve + ScalarArithmetic,

impl<Frac: LeEqU8> FromStr for FixedI8<Frac>

impl<Frac: LeEqU8> FromStr for FixedU8<Frac>

impl<Frac: LeEqU16> FromStr for FixedI16<Frac>

impl<Frac: LeEqU16> FromStr for FixedU16<Frac>

impl<Frac: LeEqU32> FromStr for FixedI32<Frac>

impl<Frac: LeEqU32> FromStr for FixedU32<Frac>

impl<Frac: LeEqU64> FromStr for FixedI64<Frac>

impl<Frac: LeEqU64> FromStr for FixedU64<Frac>

impl<Frac: LeEqU128> FromStr for FixedI128<Frac>

impl<Frac: LeEqU128> FromStr for FixedU128<Frac>

impl<F: Fixed> FromStr for Unwrapped<F>

impl<F: Fixed> FromStr for Wrapping<F>

impl FromStr for Select

impl FromStr for Glob

impl FromStr for bf16

impl FromStr for f16

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 Number

impl FromStr for JsString

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<T> FromStr for Complex<T>where
    T: FromStr + Num + Clone,

impl FromStr for Locale

impl<T: FromStr + Clone + Integer> FromStr for Ratio<T>

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

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

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 Database

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

impl FromStr for KeyPair

impl FromStr for Number

impl FromStr for Value

impl FromStr for DHChoice

impl FromStr for FixedI64

impl FromStr for FixedU64

impl FromStr for Public

impl FromStr for Public

impl FromStr for Bytes

impl FromStr for Keyring

impl FromStr for Vendor

impl FromStr for Triple

impl FromStr for Color

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<S: FromStr> FromStr for Ascii<S>

impl<S: FromStr + AsRef<str>> FromStr for UniCase<S>

impl FromStr for Url