Trait FromStr

1.0.0 · Source
pub(crate) 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);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl FromStr for RelayPlatform

Source§

impl FromStr for RelayFamilyId

Source§

impl FromStr for IptKeyRole

Source§

type Err = ParseError

1.7.0 · Source§

impl FromStr for IpAddr

1.0.0 · Source§

impl FromStr for core::net::socket_addr::SocketAddr

Source§

impl FromStr for log::Level

Source§

impl FromStr for log::LevelFilter

Source§

impl FromStr for serde_json::value::Value

1.0.0 · Source§

impl FromStr for bool

1.20.0 · Source§

impl FromStr for char

1.0.0 · Source§

impl FromStr for f16

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

Source§

impl FromStr for CfgAddr

Source§

type Err = AddrParseError

Source§

impl FromStr for BridgeConfig

Source§

impl FromStr for BridgeConfigBuilder

BridgeConfigBuilder parses the same way as BridgeConfig

Source§

impl FromStr for RelayFlags

Source§

impl FromStr for RelayFamily

Source§

impl FromStr for Nickname

Source§

impl FromStr for AddrPortPattern

Source§

impl FromStr for PortPolicy

Source§

impl FromStr for PortRange

Source§

impl FromStr for TorVersion

Source§

impl FromStr for HsClientNickname

Available on crate feature restricted-discovery only.
Source§

type Err = BadSlug

Source§

impl FromStr for IptLocalId

§

impl FromStr for HsId

§

type Err = HsIdParseError

§

impl FromStr for HsNickname

Source§

impl FromStr for FutureTimestamp

Source§

impl FromStr for Reference

Source§

impl FromStr for ByteString

1.85.0 · Source§

impl FromStr for CString

1.0.0 · Source§

impl FromStr for String

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.45.0 · Source§

impl FromStr for OsString

Source§

impl FromStr for BigInt

Source§

impl FromStr for BigUint

Source§

impl FromStr for Number

Source§

impl FromStr for Url

Parse a string as an URL, without a base URL or encoding override.

§

impl FromStr for HsClientDescEncKey

§

type Err = HsClientDescEncKeyParseError

1.32.0 · Source§

impl FromStr for tor_hsservice::internal_prelude::PathBuf

§

impl FromStr for Address

§

type Err = Error

§

impl FromStr for Algorithm

§

type Err = LabelError

§

impl FromStr for AlgorithmName

§

type Err = LabelError

§

impl FromStr for ArtiPath

§

type Err = ArtiPathSyntaxError

§

impl FromStr for AsciiString

§

type Err = AsAsciiStrError

§

impl FromStr for Attribute

§

type Err = ParserError

§

impl FromStr for Authority

§

type Err = InvalidUri

§

impl FromStr for BString

§

type Err = Utf8Error

§

impl FromStr for BmpString

§

type Err = Error

§

impl FromStr for BridgeAddr

§

type Err = BridgeAddrError

§

impl FromStr for ByteQty

§

type Err = InvalidByteQty

§

impl FromStr for Certificate

§

type Err = Error

§

impl FromStr for Cipher

§

type Err = LabelError

§

impl FromStr for ConfigOpts

§

type Err = Error

§

impl FromStr for CountryCode

§

type Err = Error

§

impl FromStr for DataLocale

§

type Err = DataError

§

impl FromStr for DateTime

§

type Err = Error

§

impl FromStr for Datetime

§

type Err = DatetimeParseError

§

impl FromStr for Deserializer

§

type Err = Error

§

impl FromStr for DocumentMut

§

type Err = TomlError

§

impl FromStr for Duration

§

type Err = Error

§

impl FromStr for EcdsaCurve

§

type Err = LabelError

§

impl FromStr for Entry

§

type Err = Error

§

impl FromStr for Entry

§

type Err = Error

§

impl FromStr for Fingerprint

§

type Err = Error

§

impl FromStr for HashAlg

§

type Err = LabelError

§

impl FromStr for HeaderName

§

type Err = InvalidHeaderName

§

impl FromStr for HeaderValue

§

type Err = InvalidHeaderValue

§

impl FromStr for HostPatterns

§

type Err = Error

§

impl FromStr for HttpDate

§

type Err = Error

§

impl FromStr for ImDocument<String>

§

type Err = TomlError

§

impl FromStr for InternalString

§

impl FromStr for Iso8601TimeSlug

§

type Err = BadIso8601TimeSlug

§

impl FromStr for Item

§

type Err = TomlError

§

impl FromStr for KdfAlg

§

type Err = LabelError

§

impl FromStr for Key

§

type Err = ParserError

§

impl FromStr for Key

§

type Err = ParserError

§

impl FromStr for Key

§

type Err = TomlError

§

impl FromStr for KeystoreId

§

type Err = Error

§

impl FromStr for Language

§

type Err = ParserError

§

impl FromStr for LanguageIdentifier

§

type Err = ParserError

§

impl FromStr for Level

§

type Err = ParseLevelError

§

impl FromStr for LevelFilter

§

type Err = ParseLevelFilterError

§

impl FromStr for Locale

§

type Err = ParserError

§

impl FromStr for Map<String, Value>

§

type Err = Error

§

impl FromStr for Marker

§

type Err = Error

§

impl FromStr for Method

§

type Err = InvalidMethod

§

impl FromStr for Month

§

type Err = InvalidVariant

§

impl FromStr for Num

§

impl FromStr for ObjectIdentifier

§

type Err = Error

§

impl FromStr for Oid<'_>

§

type Err = OidParseError

§

impl FromStr for OptionCc

§

type Err = Error

§

impl FromStr for PaddingLevel

§

type Err = ParseError

§

impl FromStr for PathAndQuery

§

type Err = InvalidUri

§

impl FromStr for PathBuf

§

impl FromStr for PrivateKey

§

type Err = Error

§

impl FromStr for Protocols

A Protocols set can be parsed from a string according to the format used in Tor consensus documents.

A protocols set is represented by a space-separated list of entries. Each entry is of the form Name=Versions, where Name is the name of a protocol, and Versions is a comma-separated list of version numbers and version ranges. Each version range is a pair of integers separated by -.

No protocol name may be listed twice. No version may be listed twice for a single protocol. All versions must be in range 0 through 63 inclusive.

§

type Err = ParseError

§

impl FromStr for PtTargetAddr

§

type Err = BridgeAddrError

§

impl FromStr for PtTransportName

§

type Err = TransportIdError

§

impl FromStr for PublicKey

§

type Err = Error

§

impl FromStr for Regex

§

type Err = Error

§

impl FromStr for Regex

§

type Err = Error

§

impl FromStr for Region

§

type Err = ParserError

§

impl FromStr for RelayId

§

type Err = RelayIdError

§

impl FromStr for RelayIdType

§

type Err = RelayIdError

§

impl FromStr for Scheme

§

type Err = InvalidUri

§

impl FromStr for Script

§

type Err = ParserError

§

impl FromStr for SendMeVersion

§

type Err = <u8 as FromStr>::Err

§

impl FromStr for Signature

Decode a signature from hexadecimal.

Upper and lower case hexadecimal are both accepted, however mixed case is rejected.

§

type Err = Error

§

impl FromStr for SocketAddr

§

type Err = AddrParseError

§

impl FromStr for SshSig

§

type Err = Error

§

impl FromStr for StatusCode

§

type Err = InvalidStatusCode

§

impl FromStr for Subtag

§

type Err = ParserError

§

impl FromStr for Subtag

§

type Err = ParserError

§

impl FromStr for TagMode

§

type Err = Error

§

impl FromStr for Timestamp

§

type Err = Error

§

impl FromStr for TransportId

§

type Err = TransportIdError

§

impl FromStr for Uri

§

type Err = InvalidUri

§

impl FromStr for Value

§

type Err = ParserError

§

impl FromStr for Value

§

type Err = ParserError

§

impl FromStr for Value

§

type Err = Error

§

impl FromStr for Value

§

type Err = TomlError

§

impl FromStr for ValueDeserializer

§

type Err = Error

§

impl FromStr for Variant

§

type Err = ParserError

§

impl FromStr for Weekday

§

type Err = InvalidVariant

§

impl FromStr for u1

§

impl FromStr for u2

§

impl FromStr for u3

§

impl FromStr for u4

§

impl FromStr for u5

§

impl FromStr for u6

§

impl FromStr for u7

§

impl FromStr for u24

§

impl FromStr for u40

§

impl FromStr for u48

§

impl FromStr for u56

§

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

Decode a SEC1-encoded point from hexadecimal.

Upper and lower case hexadecimal are both accepted, however mixed case is rejected.

§

type Err = Error

Source§

impl<T> FromStr for NetParams<T>
where T: FromStr, <T as FromStr>::Err: Error,

§

impl<T> FromStr for IntegerDays<T>
where T: FromStr,

§

type Err = <T as FromStr>::Err

§

impl<T> FromStr for IntegerMilliseconds<T>
where T: FromStr,

§

type Err = <T as FromStr>::Err

§

impl<T> FromStr for IntegerMinutes<T>
where T: FromStr,

§

type Err = <T as FromStr>::Err

§

impl<T> FromStr for IntegerSeconds<T>
where T: FromStr,

§

type Err = <T as FromStr>::Err

§

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

§

type Err = ParseNotNanError<<T as FromStr>::Err>

§

impl<T> FromStr for OrderedFloat<T>
where T: FromStr,

§

type Err = <T as FromStr>::Err

Source§

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

§

impl<const L: i32, const H: i32> FromStr for BoundedInt32<L, H>

§

type Err = Error

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

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

§

type Err = ParseIntError

§

impl<const N: usize> FromStr for TinyAsciiStr<N>

§

type Err = TinyStrError

§

impl<const N: usize> FromStr for TinyAsciiStr<N>

§

type Err = ParseError

impl FromStr for Host

impl FromStr for TorAddr

impl FromStr for Action

impl FromStr for RangeEnd

impl<A> FromStr for AddrWithStr<A>
where A: Clone + Debug + FromStr,