Trait 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.

§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 · 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 Level

Source§

impl FromStr for NonFungibleLocalId

1.7.0 · Source§

impl FromStr for IpAddr

1.0.0 · Source§

impl FromStr for SocketAddr

Source§

impl FromStr for Color

Source§

impl FromStr for TypedAccessControllerBlueprintEventKey

Source§

impl FromStr for TypedAccountBlueprintEventKey

Source§

impl FromStr for TypedAccountLockerBlueprintEventKey

Source§

impl FromStr for TypedComponentRoyaltyBlueprintEventKey

Source§

impl FromStr for TypedConsensusManagerBlueprintEventKey

Source§

impl FromStr for TypedFungibleResourceManagerBlueprintEventKey

Source§

impl FromStr for TypedFungibleVaultBlueprintEventKey

Source§

impl FromStr for TypedIdentityBlueprintEventKey

Source§

impl FromStr for TypedMetadataBlueprintEventKey

Source§

impl FromStr for TypedMultiResourcePoolBlueprintEventKey

Source§

impl FromStr for TypedNonFungibleResourceManagerBlueprintEventKey

Source§

impl FromStr for TypedNonFungibleVaultBlueprintEventKey

Source§

impl FromStr for TypedOneResourcePoolBlueprintEventKey

Source§

impl FromStr for TypedPackageBlueprintEventKey

Source§

impl FromStr for TypedRoleAssignmentBlueprintEventKey

Source§

impl FromStr for TypedTransactionProcessorBlueprintEventKey

Source§

impl FromStr for TypedTransactionTrackerBlueprintEventKey

Source§

impl FromStr for TypedTwoResourcePoolBlueprintEventKey

Source§

impl FromStr for TypedValidatorBlueprintEventKey

Source§

impl FromStr for Profile

Source§

impl FromStr for serde_json::value::Value

Source§

impl FromStr for toml::value::Value

Source§

impl FromStr for Item

Source§

impl FromStr for toml_edit::value::Value

Source§

impl FromStr for Feature

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 ByteString

1.85.0 · Source§

impl FromStr for CString

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

impl FromStr for proc_macro::Literal

Parse a single literal from its stringified representation.

In order to parse successfully, the input string must not contain anything but the literal token. Specifically, it must not contain whitespace or comments in addition to the literal.

The resulting literal token will have a Span::call_site() span.

NOTE: some errors may cause panics instead of returning LexError. We reserve the right to change these errors into LexErrors later.

1.15.0 · Source§

impl FromStr for proc_macro::TokenStream

Attempts to break the string into tokens and parse those tokens into a token stream. May fail for a number of reasons, for example, if the string contains unbalanced delimiters or characters not existing in the language. All tokens in the parsed stream get Span::call_site() spans.

NOTE: some errors may cause panics instead of returning LexError. We reserve the right to change these errors into LexErrors later.

1.45.0 · Source§

impl FromStr for OsString

1.32.0 · Source§

impl FromStr for PathBuf

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 BigInt

Source§

impl FromStr for BigUint

Source§

impl FromStr for proc_macro2::Literal

Source§

impl FromStr for proc_macro2::TokenStream

Attempts to break the string into tokens and parse those tokens into a token stream.

May fail for a number of reasons, for example, if the string contains unbalanced delimiters or characters not existing in the language.

NOTE: Some errors may cause panics instead of returning LexError. We reserve the right to change these errors into LexErrors later.

Source§

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

Source§

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

Source§

impl FromStr for SharedSecret

Source§

impl FromStr for secp256k1::ecdsa::Signature

Source§

impl FromStr for ElligatorSwift

Source§

impl FromStr for Keypair

Source§

impl FromStr for PublicKey

Source§

impl FromStr for SecretKey

Source§

impl FromStr for XOnlyPublicKey

Source§

impl FromStr for secp256k1::schnorr::Signature

Source§

impl FromStr for BuildMetadata

Source§

impl FromStr for Comparator

Source§

impl FromStr for Prerelease

Source§

impl FromStr for Version

Source§

impl FromStr for VersionReq

Source§

impl FromStr for Number

Source§

impl FromStr for Map<String, Value>

Source§

impl FromStr for Datetime

Source§

impl FromStr for Deserializer

Source§

impl FromStr for ValueDeserializer

Source§

impl FromStr for Document

Source§

impl FromStr for InternalString

Source§

impl FromStr for Key

Source§

impl FromStr for Braced

Source§

impl FromStr for Hyphenated

Source§

impl FromStr for Simple

Source§

impl FromStr for Urn

Source§

impl FromStr for Uuid

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>

Source§

impl FromStr for Bls12381G1PublicKey

Source§

impl FromStr for Bls12381G2Signature

Source§

impl FromStr for Decimal

Source§

impl FromStr for Ed25519PublicKey

Source§

impl FromStr for Ed25519Signature

Source§

impl FromStr for Hash

Source§

impl FromStr for I192

Source§

impl FromStr for I256

Source§

impl FromStr for I320

Source§

impl FromStr for I384

Source§

impl FromStr for I448

Source§

impl FromStr for I512

Source§

impl FromStr for I768

Source§

impl FromStr for NetworkDefinition

Source§

impl FromStr for PreciseDecimal

Source§

impl FromStr for Secp256k1PublicKey

Source§

impl FromStr for Secp256k1Signature

1.0.0 · Source§

impl FromStr for String

Source§

impl FromStr for U192

Source§

impl FromStr for U256

Source§

impl FromStr for U320

Source§

impl FromStr for U384

Source§

impl FromStr for U448

Source§

impl FromStr for U512

Source§

impl FromStr for U768

Source§

impl FromStr for UtcDateTime

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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