Trait otter_api_tests::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 = AddrParseError
type Err = AddrParseError
type Err = AddrParseError
type Err = AddrParseError
type Err = AddrParseError
type Err = AddrParseError
Converts 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 = ParseFloatError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
Parse 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 = ParseBoolError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
Converts 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 = ParseFloatError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
impl FromStr for PublicKey
impl FromStr for PublicKey
impl FromStr for Color
impl FromStr for Color
type Err = ParseRatioError
impl FromStr for WordBreak
impl FromStr for WordBreak
impl FromStr for SentenceBreak
impl FromStr for SentenceBreak
impl FromStr for GraphemeClusterBreak
impl FromStr for GraphemeClusterBreak
impl FromStr for Glob
impl FromStr for Glob
type Err = PatternError
impl FromStr for GraphemeClusterBreak
impl FromStr for GraphemeClusterBreak
impl FromStr for WordBreak
impl FromStr for WordBreak
impl FromStr for SentenceBreak
impl FromStr for SentenceBreak
type Err = InvalidHeaderName
type Err = InvalidHeaderValue
type Err = InvalidStatusCode
type Err = InvalidUri
type Err = InvalidUri
type Err = InvalidUri
impl FromStr for Name
impl FromStr for Name
type Err = ParseLevelFilterError
type Err = ParseLevelError
type Err = AddrParseError
type Err = AddrParseError
type Err = AddrParseError
Implementors
type Err = InvalidScopedName
type Err = ParseError
type Err = ParseLevelError
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());
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 = ParseError
type Err = ParseError
type Err = ParseError
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
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
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
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = ParseIntError
type Err = PatternError
type Err = DatetimeParseError
type Err = ParseIntError
type Err = ParseError
pub fn from_str(s: &str) -> Result<ZCoord, ParseError>
pub fn from_str(
s: &str
) -> Result<AbbrevPresentationLayout, <AbbrevPresentationLayout as FromStr>::Err>
[src]type Err = InvalidScopedName
type Err = BadAssetUrlToken
type Err = InvalidScopedName
Convert 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<()>