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.
§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§
Required Methods§
1.0.0 · sourcefn from_str(s: &str) -> Result<Self, Self::Err>
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);Object Safety§
Implementors§
source§impl FromStr for NonFungibleLocalId
impl FromStr for NonFungibleLocalId
type Err = ParseNonFungibleLocalIdError
1.0.0 · source§impl FromStr for SocketAddr
impl FromStr for SocketAddr
type Err = AddrParseError
source§impl FromStr for TypedAccountBlueprintEventKey
impl FromStr for TypedAccountBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for TypedFungibleResourceManagerBlueprintEventKey
impl FromStr for TypedFungibleResourceManagerBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for TypedIdentityBlueprintEventKey
impl FromStr for TypedIdentityBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for TypedMetadataBlueprintEventKey
impl FromStr for TypedMetadataBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for TypedNonFungibleResourceManagerBlueprintEventKey
impl FromStr for TypedNonFungibleResourceManagerBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for TypedPackageBlueprintEventKey
impl FromStr for TypedPackageBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for TypedValidatorBlueprintEventKey
impl FromStr for TypedValidatorBlueprintEventKey
type Err = TypedNativeEventError
source§impl FromStr for Bls12381G1PublicKey
impl FromStr for Bls12381G1PublicKey
type Err = ParseBlsPublicKeyError
source§impl FromStr for Bls12381G2Signature
impl FromStr for Bls12381G2Signature
type Err = ParseBlsSignatureError
source§impl FromStr for Ed25519PublicKey
impl FromStr for Ed25519PublicKey
type Err = ParseEd25519PublicKeyError
source§impl FromStr for Ed25519Signature
impl FromStr for Ed25519Signature
type Err = ParseEd25519SignatureError
source§impl FromStr for NetworkDefinition
impl FromStr for NetworkDefinition
type Err = ParseNetworkError
source§impl FromStr for PreciseDecimal
impl FromStr for PreciseDecimal
type Err = ParsePreciseDecimalError
source§impl FromStr for Secp256k1PublicKey
impl FromStr for Secp256k1PublicKey
type Err = ParseSecp256k1PublicKeyError
source§impl FromStr for Secp256k1Signature
impl FromStr for Secp256k1Signature
type Err = ParseSecp256k1SignatureError
source§impl FromStr for UtcDateTime
impl FromStr for UtcDateTime
type Err = ParseUtcDateTimeError
1.5.0 · source§impl FromStr for SocketAddrV4
impl FromStr for SocketAddrV4
type Err = AddrParseError
1.5.0 · source§impl FromStr for SocketAddrV6
impl FromStr for SocketAddrV6
type Err = AddrParseError
1.54.0 · source§impl FromStr for proc_macro::Literal
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
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.
source§impl FromStr for ed25519::Signature
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 proc_macro2::TokenStream
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.