Trait otter_api_tests::str::FromStr 1.0.0[−][src]
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 coords: Vec<&str> = s.trim_matches(|p| p == '(' || p == ')' ) .split(',') .collect(); let x_fromstr = coords[0].parse::<i32>()?; let y_fromstr = coords[1].parse::<i32>()?; Ok(Point { x: x_fromstr, y: y_fromstr }) } } let p = Point::from_str("(1,2)"); assert_eq!(p.unwrap(), Point{ x: 1, y: 2} )
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 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);
Implementations on Foreign Types
type Err = AddrParseErrortype Err = AddrParseErrortype Err = AddrParseErrortype Err = AddrParseErrortype Err = AddrParseErrortype Err = AddrParseErrorConverts a string in base 10 to a float. Accepts an optional decimal exponent.
This function accepts strings such as
- ‘3.14’
- ‘-3.14’
- ‘2.5E10’, or equivalently, ‘2.5e10’
- ‘2.5E-10’
- ‘5.’
- ‘.5’, or, equivalently, ‘0.5’
- ‘inf’, ‘-inf’, ‘NaN’
Leading and trailing whitespace represent an error.
Grammar
All strings that adhere to the following EBNF grammar
will result in an Ok being returned:
Float ::= Sign? ( 'inf' | 'NaN' | Number )
Number ::= ( Digit+ |
Digit+ '.' Digit* |
Digit* '.' Digit+ ) Exp?
Exp ::= [eE] Sign? Digit+
Sign ::= [+-]
Digit ::= [0-9]
Known bugs
In some situations, some strings that should create a valid float instead return an error. See issue #31407 for details.
Arguments
- src - A string
Return value
Err(ParseFloatError) if the string did not represent a valid
number. Otherwise, Ok(n) where n is the floating-point
number represented by src.
type Err = ParseFloatErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrorParse a bool from a string.
Yields a Result<bool, ParseBoolError>, because s may or may not
actually be parseable.
Examples
use std::str::FromStr; assert_eq!(FromStr::from_str("true"), Ok(true)); assert_eq!(FromStr::from_str("false"), Ok(false)); assert!(<bool as FromStr>::from_str("not even a boolean").is_err());
Note, in many cases, the .parse() method on str is more proper.
assert_eq!("true".parse(), Ok(true)); assert_eq!("false".parse(), Ok(false)); assert!("not even a boolean".parse::<bool>().is_err());
type Err = ParseBoolErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrorConverts a string in base 10 to a float. Accepts an optional decimal exponent.
This function accepts strings such as
- ‘3.14’
- ‘-3.14’
- ‘2.5E10’, or equivalently, ‘2.5e10’
- ‘2.5E-10’
- ‘5.’
- ‘.5’, or, equivalently, ‘0.5’
- ‘inf’, ‘-inf’, ‘NaN’
Leading and trailing whitespace represent an error.
Grammar
All strings that adhere to the following EBNF grammar
will result in an Ok being returned:
Float ::= Sign? ( 'inf' | 'NaN' | Number )
Number ::= ( Digit+ |
Digit+ '.' Digit* |
Digit* '.' Digit+ ) Exp?
Exp ::= [eE] Sign? Digit+
Sign ::= [+-]
Digit ::= [0-9]
Known bugs
In some situations, some strings that should create a valid float instead return an error. See issue #31407 for details.
Arguments
- src - A string
Return value
Err(ParseFloatError) if the string did not represent a valid
number. Otherwise, Ok(n) where n is the floating-point
number represented by src.
type Err = ParseFloatErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrorimpl FromStr for PublicKey
impl FromStr for PublicKeyimpl FromStr for Color
impl FromStr for Colortype Err = ParseRatioErrorimpl FromStr for WordBreak
impl FromStr for WordBreakimpl FromStr for SentenceBreak
impl FromStr for SentenceBreakimpl FromStr for GraphemeClusterBreak
impl FromStr for GraphemeClusterBreakimpl FromStr for Glob
impl FromStr for Globtype Err = PatternErrorimpl FromStr for GraphemeClusterBreak
impl FromStr for GraphemeClusterBreakimpl FromStr for WordBreak
impl FromStr for WordBreakimpl FromStr for SentenceBreak
impl FromStr for SentenceBreaktype Err = InvalidHeaderNametype Err = InvalidHeaderValuetype Err = InvalidStatusCodetype Err = InvalidUritype Err = InvalidUritype Err = InvalidUriimpl FromStr for Name
impl FromStr for Nametype Err = ParseLevelFilterErrortype Err = ParseLevelErrortype Err = AddrParseErrortype Err = AddrParseErrortype Err = AddrParseErrorImplementors
type Err = InvalidScopedNametype Err = ParseErrortype Err = ParseLevelErrorParsing 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());
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 = ParseErrortype Err = ParseErrortype Err = ParseErrorParsing 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 = ParseErrorParsing 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 = ParseErrorParsing 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 = ParseErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = ParseIntErrortype Err = PatternErrortype Err = DatetimeParseErrortype Err = ParseIntErrortype Err = ParseErrorpub fn from_str(s: &str) -> Result<ZCoord, ParseError>pub fn from_str(
s: &str
) -> Result<AbbrevPresentationLayout, <AbbrevPresentationLayout as FromStr>::Err>[src]type Err = InvalidScopedNametype Err = BadAssetUrlTokentype Err = InvalidScopedNameConvert a &str to NotNan. Returns an error if the string fails to parse,
or if the resulting value is NaN
use ordered_float::NotNan; assert!("-10".parse::<NotNan<f32>>().is_ok()); assert!("abc".parse::<NotNan<f32>>().is_err()); assert!("NaN".parse::<NotNan<f32>>().is_err());
type Err = ParseNotNanError<<T as FromStr>::Err>impl<T> FromStr for OrderedFloat<T> where
T: FromStr,
impl<T> FromStr for OrderedFloat<T> where
T: FromStr, pub fn from_str(
s: &str
) -> Result<OrderedFloat<T>, <OrderedFloat<T> as FromStr>::Err>
pub fn from_str(
s: &str
) -> Result<OrderedFloat<T>, <OrderedFloat<T> as FromStr>::Err>Convert a &str to OrderedFloat. Returns an error if the string fails to parse.
use ordered_float::OrderedFloat; assert!("-10".parse::<OrderedFloat<f32>>().is_ok()); assert!("abc".parse::<OrderedFloat<f32>>().is_err()); assert!("NaN".parse::<OrderedFloat<f32>>().is_ok());
type Err = CapacityError<()>