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;
use std::num::ParseIntError;
#[derive(Debug, PartialEq)]
struct Point {
x: i32,
y: i32
}
impl FromStr for Point {
type Err = ParseIntError;
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(','))
.unwrap();
let x_fromstr = x.parse::<i32>()?;
let y_fromstr = y.parse::<i32>()?;
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);Required Associated Types
Required Methods
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);Implementors
sourceimpl FromStr for WhitelistMintMode
impl FromStr for WhitelistMintMode
impl FromStr for CommitmentLevel
impl FromStr for CommitmentLevel
type Err = ParseCommitmentLevelError
sourceimpl FromStr for SocketAddr
impl FromStr for SocketAddr
type Err = AddrParseError
1.7.0 · sourceimpl FromStr for IpAddr
impl FromStr for IpAddr
type Err = AddrParseError
sourceimpl FromStr for chrono::month::Month
impl FromStr for chrono::month::Month
Parsing a str into a Month uses the format %W.
Example
use chrono::Month;
assert_eq!("January".parse::<Month>(), Ok(Month::January));
assert!("any day".parse::<Month>().is_err());The parsing is case-insensitive.
assert_eq!("fEbruARy".parse::<Month>(), Ok(Month::February));Only the shortest form (e.g. jan) and the longest form (e.g. january) is accepted.
assert!("septem".parse::<Month>().is_err());
assert!("Augustin".parse::<Month>().is_err());type Err = ParseMonthError
sourceimpl FromStr for chrono::weekday::Weekday
impl FromStr for chrono::weekday::Weekday
Parsing a str into a Weekday uses the format %W.
Example
use chrono::Weekday;
assert_eq!("Sunday".parse::<Weekday>(), Ok(Weekday::Sun));
assert!("any day".parse::<Weekday>().is_err());The parsing is case-insensitive.
assert_eq!("mON".parse::<Weekday>(), Ok(Weekday::Mon));Only the shortest form (e.g. sun) and the longest form (e.g. sunday) is accepted.
assert!("thurs".parse::<Weekday>().is_err());type Err = ParseWeekdayError
sourceimpl FromStr for AppSettings
impl FromStr for AppSettings
sourceimpl FromStr for ArgSettings
impl FromStr for ArgSettings
sourceimpl FromStr for IpNet
impl FromStr for IpNet
type Err = AddrParseError
sourceimpl FromStr for log::Level
impl FromStr for log::Level
type Err = ParseLevelError
sourceimpl FromStr for log::LevelFilter
impl FromStr for log::LevelFilter
type Err = ParseLevelError
sourceimpl FromStr for bool
impl FromStr for bool
type Err = ParseBoolError
1.20.0 · sourceimpl FromStr for char
impl FromStr for char
type Err = ParseCharError
sourceimpl FromStr for f32
impl FromStr for f32
type Err = ParseFloatError
sourceimpl FromStr for f64
impl FromStr for f64
type Err = ParseFloatError
sourceimpl FromStr for i8
impl FromStr for i8
type Err = ParseIntError
sourceimpl FromStr for i16
impl FromStr for i16
type Err = ParseIntError
sourceimpl FromStr for i32
impl FromStr for i32
type Err = ParseIntError
sourceimpl FromStr for i64
impl FromStr for i64
type Err = ParseIntError
sourceimpl FromStr for i128
impl FromStr for i128
type Err = ParseIntError
sourceimpl FromStr for isize
impl FromStr for isize
type Err = ParseIntError
sourceimpl FromStr for u8
impl FromStr for u8
type Err = ParseIntError
sourceimpl FromStr for u16
impl FromStr for u16
type Err = ParseIntError
sourceimpl FromStr for u32
impl FromStr for u32
type Err = ParseIntError
sourceimpl FromStr for u64
impl FromStr for u64
type Err = ParseIntError
sourceimpl FromStr for u128
impl FromStr for u128
type Err = ParseIntError
sourceimpl FromStr for usize
impl FromStr for usize
type Err = ParseIntError
sourceimpl FromStr for sugar_cli::utils::Hash
impl FromStr for sugar_cli::utils::Hash
type Err = ParseHashError
impl FromStr for CommitmentConfig
impl FromStr for CommitmentConfig
type Err = ParseCommitmentLevelError
sourceimpl FromStr for Pubkey
impl FromStr for Pubkey
type Err = ParsePubkeyError
sourceimpl FromStr for String
impl FromStr for String
type Err = Infallible
1.35.0 · sourceimpl FromStr for NonZeroI8
impl FromStr for NonZeroI8
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI16
impl FromStr for NonZeroI16
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI32
impl FromStr for NonZeroI32
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI64
impl FromStr for NonZeroI64
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroI128
impl FromStr for NonZeroI128
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroIsize
impl FromStr for NonZeroIsize
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU8
impl FromStr for NonZeroU8
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU16
impl FromStr for NonZeroU16
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU32
impl FromStr for NonZeroU32
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU64
impl FromStr for NonZeroU64
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroU128
impl FromStr for NonZeroU128
type Err = ParseIntError
1.35.0 · sourceimpl FromStr for NonZeroUsize
impl FromStr for NonZeroUsize
type Err = ParseIntError
1.45.0 · sourceimpl FromStr for OsString
impl FromStr for OsString
type Err = Infallible
1.5.0 · sourceimpl FromStr for SocketAddrV4
impl FromStr for SocketAddrV4
type Err = AddrParseError
1.5.0 · sourceimpl FromStr for SocketAddrV6
impl FromStr for SocketAddrV6
type Err = AddrParseError
sourceimpl FromStr for Ipv4Addr
impl FromStr for Ipv4Addr
type Err = AddrParseError
sourceimpl FromStr for Ipv6Addr
impl FromStr for Ipv6Addr
type Err = AddrParseError
sourceimpl FromStr for chrono::datetime::DateTime<FixedOffset>
impl FromStr for chrono::datetime::DateTime<FixedOffset>
Accepts a relaxed form of RFC3339. A space or a ‘T’ are acepted as the separator between the date and time parts. Additional spaces are allowed between each component.
All of these examples are equivalent:
"2012-12-12T12:12:12Z".parse::<DateTime<FixedOffset>>();
"2012-12-12 12:12:12Z".parse::<DateTime<FixedOffset>>();
"2012- 12-12T12: 12:12Z".parse::<DateTime<FixedOffset>>();type Err = ParseError
sourceimpl FromStr for chrono::datetime::DateTime<Local>
impl FromStr for chrono::datetime::DateTime<Local>
Accepts a relaxed form of RFC3339. A space or a ‘T’ are acepted as the separator between the date and time parts. Additional spaces are allowed between each component.
All of these examples are equivalent:
"2012-12-12T12:12:12Z".parse::<DateTime<Local>>();
"2012-12-12 12:12:12Z".parse::<DateTime<Local>>();
"2012- 12-12T12: 12:12Z".parse::<DateTime<Local>>();type Err = ParseError
sourceimpl FromStr for chrono::datetime::DateTime<Utc>
impl FromStr for chrono::datetime::DateTime<Utc>
Accepts a relaxed form of RFC3339. A space or a ‘T’ are acepted as the separator between the date and time parts. Additional spaces are allowed between each component.
All of these examples are equivalent:
"2012-12-12T12:12:12Z".parse::<DateTime<Utc>>();
"2012-12-12 12:12:12Z".parse::<DateTime<Utc>>();
"2012- 12-12T12: 12:12Z".parse::<DateTime<Utc>>();type Err = ParseError
sourceimpl FromStr for NaiveDate
impl FromStr for NaiveDate
Parsing a str into a NaiveDate uses the same format,
%Y-%m-%d, as in Debug and Display.
Example
use chrono::NaiveDate;
let d = NaiveDate::from_ymd(2015, 9, 18);
assert_eq!("2015-09-18".parse::<NaiveDate>(), Ok(d));
let d = NaiveDate::from_ymd(12345, 6, 7);
assert_eq!("+12345-6-7".parse::<NaiveDate>(), Ok(d));
assert!("foo".parse::<NaiveDate>().is_err());type Err = ParseError
sourceimpl FromStr for NaiveDateTime
impl FromStr for NaiveDateTime
Parsing a str into a NaiveDateTime uses the same format,
%Y-%m-%dT%H:%M:%S%.f, as in Debug.
Example
use chrono::{NaiveDateTime, NaiveDate};
let dt = NaiveDate::from_ymd(2015, 9, 18).and_hms(23, 56, 4);
assert_eq!("2015-09-18T23:56:04".parse::<NaiveDateTime>(), Ok(dt));
let dt = NaiveDate::from_ymd(12345, 6, 7).and_hms_milli(7, 59, 59, 1_500); // leap second
assert_eq!("+12345-6-7T7:59:60.5".parse::<NaiveDateTime>(), Ok(dt));
assert!("foo".parse::<NaiveDateTime>().is_err());type Err = ParseError
sourceimpl FromStr for NaiveTime
impl FromStr for NaiveTime
Parsing a str into a NaiveTime uses the same format,
%H:%M:%S%.f, as in Debug and Display.
Example
use chrono::NaiveTime;
let t = NaiveTime::from_hms(23, 56, 4);
assert_eq!("23:56:04".parse::<NaiveTime>(), Ok(t));
let t = NaiveTime::from_hms_nano(23, 56, 4, 12_345_678);
assert_eq!("23:56:4.012345678".parse::<NaiveTime>(), Ok(t));
let t = NaiveTime::from_hms_nano(23, 59, 59, 1_234_567_890); // leap second
assert_eq!("23:59:60.23456789".parse::<NaiveTime>(), Ok(t));
assert!("foo".parse::<NaiveTime>().is_err());type Err = ParseError
sourceimpl FromStr for const_oid::ObjectIdentifier
impl FromStr for const_oid::ObjectIdentifier
sourceimpl FromStr for DateTimeUtc
impl FromStr for DateTimeUtc
sourceimpl FromStr for Pattern
impl FromStr for Pattern
type Err = PatternError
sourceimpl FromStr for HeaderName
impl FromStr for HeaderName
type Err = InvalidHeaderName
sourceimpl FromStr for HeaderValue
impl FromStr for HeaderValue
type Err = InvalidHeaderValue
sourceimpl FromStr for Method
impl FromStr for Method
type Err = InvalidMethod
sourceimpl FromStr for StatusCode
impl FromStr for StatusCode
type Err = InvalidStatusCode
sourceimpl FromStr for Authority
impl FromStr for Authority
type Err = InvalidUri
sourceimpl FromStr for PathAndQuery
impl FromStr for PathAndQuery
type Err = InvalidUri
sourceimpl FromStr for Scheme
impl FromStr for Scheme
type Err = InvalidUri
sourceimpl FromStr for Uri
impl FromStr for Uri
type Err = InvalidUri
sourceimpl FromStr for Ipv4Net
impl FromStr for Ipv4Net
type Err = AddrParseError
sourceimpl FromStr for Ipv6Net
impl FromStr for Ipv6Net
type Err = AddrParseError
sourceimpl FromStr for Mime
impl FromStr for Mime
type Err = FromStrError
sourceimpl FromStr for num_bigint::bigint::BigInt
impl FromStr for num_bigint::bigint::BigInt
type Err = ParseBigIntError
sourceimpl FromStr for num_bigint::biguint::BigUint
impl FromStr for num_bigint::biguint::BigUint
type Err = ParseBigIntError
sourceimpl FromStr for num_bigint_dig::bigint::BigInt
impl FromStr for num_bigint_dig::bigint::BigInt
type Err = ParseBigIntError
sourceimpl FromStr for num_bigint_dig::biguint::BigUint
impl FromStr for num_bigint_dig::biguint::BigUint
type Err = ParseBigIntError
sourceimpl FromStr for num_bigint::bigint::BigInt
impl FromStr for num_bigint::bigint::BigInt
type Err = ParseBigIntError
sourceimpl FromStr for num_bigint::biguint::BigUint
impl FromStr for num_bigint::biguint::BigUint
type Err = ParseBigIntError
sourceimpl FromStr for RsaPrivateKeyDocument
impl FromStr for RsaPrivateKeyDocument
sourceimpl FromStr for RsaPublicKeyDocument
impl FromStr for RsaPublicKeyDocument
sourceimpl FromStr for PrivateKeyDocument
impl FromStr for PrivateKeyDocument
sourceimpl FromStr for BuildMetadata
impl FromStr for BuildMetadata
sourceimpl FromStr for Comparator
impl FromStr for Comparator
sourceimpl FromStr for Prerelease
impl FromStr for Prerelease
sourceimpl FromStr for VersionReq
impl FromStr for VersionReq
sourceimpl FromStr for solana_program::blake3::Hash
impl FromStr for solana_program::blake3::Hash
type Err = ParseHashError
sourceimpl FromStr for solana_program::keccak::Hash
impl FromStr for solana_program::keccak::Hash
type Err = ParseHashError
sourceimpl FromStr for PublicKeyDocument
impl FromStr for PublicKeyDocument
sourceimpl FromStr for tracing_core::metadata::Level
impl FromStr for tracing_core::metadata::Level
type Err = ParseLevelError
sourceimpl FromStr for tracing_core::metadata::LevelFilter
impl FromStr for tracing_core::metadata::LevelFilter
type Err = ParseLevelFilterError
sourceimpl FromStr for Url
impl FromStr for Url
Parse a string as an URL, without a base URL or encoding override.
type Err = ParseError
1.32.0 · sourceimpl FromStr for PathBuf
impl FromStr for PathBuf
type Err = Infallible
type Err = Error
impl FromStr for Signature
impl FromStr for Signature
Decode a signature from hexadecimal.
Upper and lower case hexadecimal are both accepted, however mixed case is rejected.