Skip to main content

FromStr

Trait FromStr 

1.0.0 (const: unstable) · 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.

§Input format and round-tripping

The input format expected by a type’s FromStr implementation depends on the type. Check the type’s documentation for the input formats it knows how to parse. Note that the input format of a type’s FromStr implementation might not necessarily accept the output format of its Display implementation, and even if it does, the Display implementation may not be lossless so the round-trip may lose information.

However, if a type has a lossless Display implementation whose output is meant to be conveniently machine-parseable and not just meant for human consumption, then the type may wish to accept the same format in FromStr, and document that usage. Having both Display and FromStr implementations where the result of Display cannot be parsed with FromStr may surprise users.

§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 (const: unstable) · Source

type Err

The associated error which can be returned from parsing.

Required Methods§

1.0.0 (const: unstable) · 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 TagMode

Source§

impl FromStr for Num

Source§

impl FromStr for log::Level

Source§

impl FromStr for log::LevelFilter

Source§

impl FromStr for serde_json::value::Value

Source§

impl FromStr for Cipher

Source§

impl FromStr for Algorithm

Source§

impl FromStr for EcdsaCurve

Source§

impl FromStr for HashAlg

Source§

impl FromStr for KdfAlg

Source§

impl FromStr for ssh_key_fork_arti::fingerprint::Fingerprint

Source§

impl FromStr for HostPatterns

Source§

impl FromStr for Marker

Source§

impl FromStr for Month

Source§

impl FromStr for Weekday

Source§

impl FromStr for toml::value::Value

Available on crate feature parse only.
Source§

impl FromStr for toml::value::Value

Available on crate feature parse only.
Source§

impl FromStr for Item

Available on crate feature parse only.
Source§

impl FromStr for toml_edit::value::Value

Available on crate feature parse only.
Source§

impl FromStr for Address

Source§

impl FromStr for PaddingLevel

Source§

impl FromStr for tor_general_addr::general::SocketAddr

Source§

impl FromStr for RelayId

Source§

impl FromStr for RelayIdType

Source§

impl FromStr for PtTargetAddr

Source§

impl FromStr for AuthCertVersion

Source§

impl FromStr for tor_netdoc::doc::netstatus::DirectorySignatureHashAlgo

Source§

impl FromStr for SoftwareVersion

Source§

impl FromStr for RelayPlatform

Source§

impl FromStr for tor_netdoc::parse2::poc::netstatus::DirectorySignatureHashAlgo

Source§

impl FromStr for NdaNetworkStatusVersion

Source§

impl FromStr for RelayFamilyId

Source§

impl FromStr for Ed25519AlgorithmString

Source§

impl FromStr for InternetHost

Source§

impl FromStr for DigestName

Source§

impl FromStr for OverloadGeneralVersion

Source§

impl FromStr for RuleKind

Source§

impl FromStr for RelayFlag

Source§

impl FromStr for IptKeyRole

1.7.0 · Source§

impl FromStr for IpAddr

1.0.0 · Source§

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

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 (const: unstable) · Source§

impl FromStr for i8

1.0.0 (const: unstable) · Source§

impl FromStr for i16

1.0.0 (const: unstable) · Source§

impl FromStr for i32

1.0.0 (const: unstable) · Source§

impl FromStr for i64

1.0.0 (const: unstable) · Source§

impl FromStr for i128

1.0.0 (const: unstable) · Source§

impl FromStr for isize

1.0.0 (const: unstable) · Source§

impl FromStr for u8

1.0.0 (const: unstable) · Source§

impl FromStr for u16

1.0.0 (const: unstable) · Source§

impl FromStr for u32

1.0.0 (const: unstable) · Source§

impl FromStr for u64

1.0.0 (const: unstable) · Source§

impl FromStr for u128

1.0.0 (const: unstable) · Source§

impl FromStr for usize

Source§

impl FromStr for u1

Source§

impl FromStr for u2

Source§

impl FromStr for u3

Source§

impl FromStr for u4

Source§

impl FromStr for u5

Source§

impl FromStr for u6

Source§

impl FromStr for u7

Source§

impl FromStr for u24

Source§

impl FromStr for u40

Source§

impl FromStr for u48

Source§

impl FromStr for u56

Source§

impl FromStr for AsciiString

Source§

impl FromStr for Oid<'_>

Source§

impl FromStr for async_std::path::pathbuf::PathBuf

Source§

impl FromStr for BString

Source§

impl FromStr for ObjectIdentifier

Source§

impl FromStr for BmpString

Source§

impl FromStr for DateTime

Source§

impl FromStr for ed25519::Signature

Decode a signature from hexadecimal.

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

Source§

impl FromStr for HeaderName

Source§

impl FromStr for HeaderValue

Source§

impl FromStr for Method

Source§

impl FromStr for StatusCode

Source§

impl FromStr for Authority

Source§

impl FromStr for PathAndQuery

Source§

impl FromStr for Scheme

Source§

impl FromStr for Uri

Source§

impl FromStr for HttpDate

Source§

impl FromStr for Duration

Source§

impl FromStr for Timestamp

Source§

impl FromStr for icu_locale_core::extensions::private::other::Subtag

Source§

impl FromStr for icu_locale_core::extensions::transform::key::Key

Source§

impl FromStr for Attribute

Source§

impl FromStr for icu_locale_core::extensions::unicode::key::Key

Source§

impl FromStr for SubdivisionId

Source§

impl FromStr for SubdivisionSuffix

Source§

impl FromStr for Language

Source§

impl FromStr for Region

Source§

impl FromStr for Script

Source§

impl FromStr for icu_locale_core::subtags::Subtag

Source§

impl FromStr for Variant

Source§

impl FromStr for Machine

From a serialized string, attempt to create a machine.

Source§

impl FromStr for BigInt

Source§

impl FromStr for BigUint

Source§

impl FromStr for Pem

Source§

impl FromStr for regex::regex::bytes::Regex

Source§

impl FromStr for regex::regex::string::Regex

Source§

impl FromStr for serde_json::map::Map<String, Value>

Source§

impl FromStr for Number

Source§

impl FromStr for AlgorithmName

Source§

impl FromStr for ConfigOpts

Available on crate feature alloc only.
Source§

impl FromStr for ssh_key_fork_arti::authorized_keys::Entry

Source§

impl FromStr for Certificate

Source§

impl FromStr for ssh_key_fork_arti::known_hosts::Entry

Source§

impl FromStr for PrivateKey

Source§

impl FromStr for ssh_key_fork_arti::public::PublicKey

Source§

impl FromStr for SshSig

Source§

impl FromStr for Gid

Available on crate features system or user only.
Source§

type Err = <u32 as FromStr>::Err

Source§

impl FromStr for Uid

Available on crate features system or user only.
Source§

type Err = <u32 as FromStr>::Err

Source§

impl FromStr for Pid

Source§

type Err = <i32 as FromStr>::Err

Source§

impl FromStr for toml::map::Map<String, Value>

Available on crate feature parse only.
Source§

impl FromStr for toml::map::Map<String, Value>

Available on crate feature parse only.
Source§

impl FromStr for toml_datetime::datetime::Datetime

Source§

impl FromStr for toml_datetime::datetime::Datetime

Source§

impl FromStr for Deserializer

Available on crate feature parse only.
Source§

impl FromStr for ValueDeserializer

Available on crate feature parse only.
Source§

impl FromStr for DocumentMut

Available on crate feature parse only.
Source§

impl FromStr for ImDocument<String>

Available on crate feature parse only.
Source§

impl FromStr for InternalString

Source§

impl FromStr for toml_edit::key::Key

Available on crate feature parse only.
Source§

impl FromStr for ByteQty

Source§

impl FromStr for CfgAddr

Source§

impl FromStr for CountryCode

Source§

impl FromStr for OptionCc

Source§

impl FromStr for BridgeConfig

Source§

impl FromStr for BridgeConfigBuilder

BridgeConfigBuilder parses the same way as BridgeConfig

Source§

impl FromStr for Seed

Source§

impl FromStr for ArtiPath

Source§

impl FromStr for KeystoreId

Source§

impl FromStr for BridgeAddr

Source§

impl FromStr for PtTransportName

Source§

impl FromStr for TransportId

Source§

impl FromStr for EncodedAuthCert

Source§

impl FromStr for ConsensusMethod

Source§

type Err = <u32 as FromStr>::Err

Source§

impl FromStr for SharedRandVal

Source§

impl FromStr for tor_netdoc::parse2::poc::netstatus::ns_per_flavour_macros::cons::NdaVoteStatus

Source§

impl FromStr for tor_netdoc::parse2::poc::netstatus::ns_per_flavour_macros::md::NdaVoteStatus

Source§

impl FromStr for tor_netdoc::parse2::poc::netstatus::ns_per_flavour_macros::vote::NdaVoteStatus

Source§

impl FromStr for RelayFamily

Source§

impl FromStr for B16

Source§

impl FromStr for B16U

Source§

impl FromStr for B64

Source§

impl FromStr for NumericBoolean

Source§

impl FromStr for ContactInfo

Source§

impl FromStr for Curve25519Public

Source§

impl FromStr for Ed25519Public

Source§

impl FromStr for Base64Fingerprint

Source§

impl FromStr for tor_netdoc::types::misc::fingerprint::Fingerprint

Source§

impl FromStr for SpFingerprint

Source§

impl FromStr for Hostname

Source§

impl FromStr for IdentifiedDigest

Source§

impl FromStr for Ignored

Source§

impl FromStr for Nickname

Source§

impl FromStr for Iso8601TimeNoSp

Source§

impl FromStr for Iso8601TimeSp

Source§

impl FromStr for AddrPortPattern

Source§

impl FromStr for PortPolicy

Source§

impl FromStr for PortRange

Source§

impl FromStr for TorVersion

Source§

impl FromStr for Iso8601TimeSlug

Source§

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.

Source§

impl FromStr for SendMeVersion

Source§

type Err = <u8 as FromStr>::Err

Source§

impl FromStr for tracing_core::metadata::Level

Source§

impl FromStr for tracing_core::metadata::LevelFilter

Source§

impl FromStr for Url

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

Source§

impl FromStr for AttributeTypeAndValue

Parse an AttributeTypeAndValue string.

This function follows the rules in RFC 4514.

Source§

impl FromStr for RdnSequence

Parse an RdnSequence string.

Follows the rules in RFC 4514.

Source§

impl FromStr for RelativeDistinguishedName

Parse a RelativeDistinguishedName string.

This function follows the rules in RFC 4514.

Source§

impl FromStr for HsClientNickname

Source§

impl FromStr for IptLocalId

Source§

impl FromStr for HsId

Source§

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

Available on non-no_global_oom_handling only.
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 HsClientDescEncKey

1.32.0 · Source§

impl FromStr for tor_hsservice::internal_prelude::PathBuf

Source§

impl<C> FromStr for SigningKey<C>

Available on crate feature pem only.
Source§

impl<C> FromStr for ecdsa::Signature<C>

Available on crate feature arithmetic only.
Source§

impl<C> FromStr for VerifyingKey<C>

Available on crate feature pem only.
Source§

impl<C> FromStr for elliptic_curve::public_key::PublicKey<C>

Available on crate feature pem only.
Source§

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

Source§

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

Source§

impl<C> FromStr for SecretKey<C>

Available on crate feature pem only.
Source§

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.

Source§

impl<T> FromStr for KeywordOrString<T>
where T: Copy + FromStr,

Source§

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

Source§

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

Source§

type Err = <T as FromStr>::Err

Source§

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

Source§

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

Source§

type Err = <T as FromStr>::Err

Source§

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

Source§

type Err = <T as FromStr>::Err

Source§

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

Source§

type Err = <T as FromStr>::Err

Source§

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

Source§

type Err = <T as FromStr>::Err

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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