Trait FromStr

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

    // Required method
    fn from_str(s: &str) -> Result<Self, Self::Err>;
}
Available on crate feature std only.
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§

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

Source§

impl FromStr for ByteString

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

1.32.0 · Source§

impl FromStr for PathBuf

1.0.0 · Source§

impl FromStr for String

Available on non-no_global_oom_handling only.
§

impl FromStr for Address<NetworkUnchecked>

Address can be parsed only with NetworkUnchecked.

§

type Err = ParseError

§

impl FromStr for AddressType

§

type Err = UnknownAddressTypeError

§

impl FromStr for Amount

§

type Err = ParseError

§

impl FromStr for BlockHash

§

type Err = HexToArrayError

§

impl FromStr for ChainCode

§

type Err = HexToArrayError

§

impl FromStr for ChainHash

§

type Err = HexToArrayError

§

impl FromStr for ChildNumber

§

type Err = Error

§

impl FromStr for CommandString

§

type Err = CommandStringError

§

impl FromStr for CompressedPublicKey

§

type Err = ParseCompressedPublicKeyError

§

impl FromStr for DefiniteDescriptorKey

§

type Err = DescriptorKeyParseError

§

impl FromStr for Denomination

§

type Err = ParseDenominationError

§

impl FromStr for DerivationPath

§

type Err = Error

§

impl FromStr for DescriptorPublicKey

§

type Err = DescriptorKeyParseError

§

impl FromStr for DescriptorSecretKey

§

type Err = DescriptorKeyParseError

§

impl FromStr for EcdsaSighashType

§

type Err = SighashTypeParseError

§

impl FromStr for ElligatorSwift

§

type Err = Error

§

impl FromStr for FeeRate

§

type Err = ParseIntError

§

impl FromStr for FilterHash

§

type Err = HexToArrayError

§

impl FromStr for FilterHeader

§

type Err = HexToArrayError

§

impl FromStr for Fingerprint

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Hash

§

type Err = HexToArrayError

§

impl FromStr for Height

§

type Err = ParseHeightError

§

impl FromStr for Height

§

type Err = ParseIntError

§

impl FromStr for Keypair

§

type Err = Error

§

impl FromStr for LegacySighash

§

type Err = HexToArrayError

§

impl FromStr for LockTime

§

type Err = ParseIntError

§

impl FromStr for Magic

§

type Err = ParseMagicError

§

impl FromStr for Midstate

§

type Err = HexToArrayError

§

impl FromStr for Network

§

type Err = ParseNetworkError

§

impl FromStr for OutPoint

§

type Err = ParseOutPointError

§

impl FromStr for PrivateKey

§

type Err = FromWifError

§

impl FromStr for PsbtSighashType

§

type Err = SighashTypeParseError

§

impl FromStr for PubkeyHash

§

type Err = HexToArrayError

§

impl FromStr for PublicKey

§

type Err = ParsePublicKeyError

§

impl FromStr for PublicKey

§

type Err = Error

§

impl FromStr for ScriptHash

§

type Err = HexToArrayError

§

impl FromStr for SecretKey

§

type Err = Error

§

impl FromStr for SegwitV0Sighash

§

type Err = HexToArrayError

§

impl FromStr for Sequence

§

type Err = ParseIntError

§

impl FromStr for SharedSecret

§

type Err = Error

§

impl FromStr for ShortId

§

type Err = HexToArrayError

§

impl FromStr for Signature

§

type Err = Error

§

impl FromStr for Signature

§

type Err = Error

§

impl FromStr for Signature

§

type Err = Error

§

impl FromStr for SignedAmount

§

type Err = ParseError

§

impl FromStr for TapLeafHash

§

type Err = HexToArrayError

§

impl FromStr for TapNodeHash

§

type Err = HexToArrayError

§

impl FromStr for TapSighash

§

type Err = HexToArrayError

§

impl FromStr for TapSighashType

§

type Err = SighashTypeParseError

§

impl FromStr for TapTweakHash

§

type Err = HexToArrayError

§

impl FromStr for Time

§

type Err = ParseTimeError

§

impl FromStr for Time

§

type Err = ParseIntError

§

impl FromStr for TxMerkleNode

§

type Err = HexToArrayError

§

impl FromStr for Txid

§

type Err = HexToArrayError

§

impl FromStr for WPubkeyHash

§

type Err = HexToArrayError

§

impl FromStr for WScriptHash

§

type Err = HexToArrayError

§

impl FromStr for Weight

§

type Err = ParseIntError

§

impl FromStr for WitnessCommitment

§

type Err = HexToArrayError

§

impl FromStr for WitnessMerkleNode

§

type Err = HexToArrayError

§

impl FromStr for WitnessVersion

§

type Err = FromStrError

§

impl FromStr for Wtxid

§

type Err = HexToArrayError

§

impl FromStr for XKeyIdentifier

§

type Err = HexToArrayError

§

impl FromStr for XOnlyPublicKey

§

type Err = Error

§

impl FromStr for Xpriv

§

type Err = Error

§

impl FromStr for Xpub

§

type Err = Error

§

impl<Pk> FromStr for Bare<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Descriptor<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Pkh<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Policy<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Policy<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Sh<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Tr<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Wpkh<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk> FromStr for Wsh<Pk>
where Pk: FromStrKey,

§

type Err = Error

§

impl<Pk, Ctx> FromStr for Miniscript<Pk, Ctx>
where Pk: FromStrKey, Ctx: ScriptContext,

§

type Err = Error

§

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

§

type Err = HexToArrayError

§

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

§

type Err = <T as FromStr>::Err

Source§

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