1.0.0[][src]Trait rustsec::package::checksum::FromStr

pub trait FromStr {
    type Err;
    fn from_str(s: &str) -> Result<Self, Self::Err>;
}

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

type Err

The associated error which can be returned from parsing.

Loading content...

Required methods

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 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);
Loading content...

Implementations on Foreign Types

impl FromStr for Ipv4Addr[src]

impl FromStr for PathBuf[src]

impl FromStr for SocketAddr[src]

impl FromStr for IpAddr[src]

impl FromStr for Ipv6Addr[src]

impl FromStr for SocketAddrV4[src]

impl FromStr for SocketAddrV6[src]

impl FromStr for u8[src]

impl FromStr for i16[src]

impl FromStr for NonZeroU8[src]

impl FromStr for NonZeroI8[src]

impl FromStr for i8[src]

impl FromStr for u32[src]

impl FromStr for NonZeroU128[src]

impl FromStr for NonZeroI32[src]

impl FromStr for NonZeroI64[src]

impl FromStr for NonZeroU64[src]

impl FromStr for NonZeroU32[src]

impl FromStr for isize[src]

impl FromStr for NonZeroI128[src]

impl FromStr for f64[src]

type Err = ParseFloatError

fn from_str(src: &str) -> Result<f64, ParseFloatError>[src]

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.

impl FromStr for NonZeroIsize[src]

impl FromStr for f32[src]

type Err = ParseFloatError

fn from_str(src: &str) -> Result<f32, ParseFloatError>[src]

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.

impl FromStr for u16[src]

impl FromStr for bool[src]

type Err = ParseBoolError

fn from_str(s: &str) -> Result<bool, ParseBoolError>[src]

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());

impl FromStr for NonZeroI16[src]

impl FromStr for i128[src]

impl FromStr for NonZeroUsize[src]

impl FromStr for usize[src]

impl FromStr for u64[src]

impl FromStr for i32[src]

impl FromStr for char[src]

impl FromStr for i64[src]

impl FromStr for NonZeroU16[src]

impl FromStr for u128[src]

impl FromStr for String[src]

impl FromStr for DateTime<Utc>[src]

impl FromStr for NaiveTime[src]

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());

impl FromStr for NaiveDateTime[src]

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());

impl FromStr for DateTime<FixedOffset>[src]

impl FromStr for DateTime<Local>[src]

impl FromStr for NaiveDate[src]

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());

impl FromStr for Weekday[src]

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());

impl FromStr for Oid[src]

type Err = Error

fn from_str(s: &str) -> Result<Oid, Error>[src]

Parse a hex-formatted object id into an Oid structure.

Errors

Returns an error if the string is empty, is longer than 40 hex characters, or contains any non-hex characters.

impl FromStr for Level[src]

impl FromStr for LevelFilter[src]

impl FromStr for Url[src]

Parse a string as an URL, without a base URL or encoding override.

impl FromStr for Datetime[src]

impl FromStr for Value[src]

impl FromStr for PrivilegesRequired[src]

impl FromStr for UserInteraction[src]

impl FromStr for Availability[src]

impl FromStr for Integrity[src]

impl FromStr for Scope[src]

impl FromStr for Base[src]

impl FromStr for AttackComplexity[src]

impl FromStr for AttackVector[src]

impl FromStr for Confidentiality[src]

impl FromStr for VersionReq[src]

impl FromStr for Op[src]

impl FromStr for Op[src]

impl FromStr for Key[src]

impl FromStr for Value[src]

impl FromStr for PlatformReq[src]

type Err = Error

fn from_str(req_str: &str) -> Result<PlatformReq, <PlatformReq as FromStr>::Err>[src]

Create a new platform requirement. Platforms support glob-like wildcards on the beginning and end, e.g. *windows*.

Must match at least one known Rust platform "target triple" (e.g. x86_64-unknown-linux-gnu) to be considered valid.

impl FromStr for OS[src]

type Err = Error

fn from_str(os_name: &str) -> Result<OS, <OS as FromStr>::Err>[src]

Create a new Env from the given string

impl FromStr for Arch[src]

type Err = Error

fn from_str(arch_name: &str) -> Result<Arch, <Arch as FromStr>::Err>[src]

Create a new Arch from the given string

impl FromStr for Env[src]

type Err = Error

fn from_str(env_name: &str) -> Result<Env, <Env as FromStr>::Err>[src]

Create a new Env from the given string

impl FromStr for Manifest

type Err = Error

fn from_str(input: &str) -> Result<Manifest, <Manifest as FromStr>::Err>

Read manifest data from string

impl FromStr for Document

type Err = TomlError

fn from_str(s: &str) -> Result<Document, <Document as FromStr>::Err>

Parses a document from a &str

impl FromStr for Key

type Err = TomlError

fn from_str(s: &str) -> Result<Key, <Key as FromStr>::Err>

Tries to parse a key from a &str, if fails, tries as basic quoted key (surrounds with "") and then literal quoted key (surrounds with '')

impl FromStr for Value

type Err = TomlError

fn from_str(s: &str) -> Result<Value, <Value as FromStr>::Err>

Parses a value from a &str

impl FromStr for AsciiString

type Err = AsAsciiStrError

impl FromStr for Regex

type Err = Error

fn from_str(s: &str) -> Result<Regex, Error>

Attempts to parse a string into a regular expression

impl FromStr for Regex

type Err = Error

fn from_str(s: &str) -> Result<Regex, Error>

Attempts to parse a string into a regular expression

impl FromStr for Uri[src]

impl FromStr for StatusCode[src]

impl FromStr for Method[src]

impl FromStr for HeaderName[src]

impl FromStr for Scheme[src]

impl FromStr for Authority[src]

impl FromStr for PathAndQuery[src]

impl FromStr for HeaderValue[src]

impl FromStr for Name[src]

impl FromStr for Mime[src]

impl<S> FromStr for Ascii<S> where
    S: FromStr
[src]

type Err = <S as FromStr>::Err

impl<S> FromStr for UniCase<S> where
    S: AsRef<str> + FromStr
[src]

type Err = <S as FromStr>::Err

impl FromStr for Color

type Err = ParseColorError

impl FromStr for Number[src]

impl FromStr for Value[src]

impl FromStr for Pattern[src]

Loading content...

Implementors

impl FromStr for Category[src]

type Err = Error

impl FromStr for Severity[src]

impl FromStr for Informational[src]

type Err = Error

impl FromStr for Collection[src]

type Err = Error

impl FromStr for ResolveVersion[src]

impl FromStr for Checksum[src]

impl FromStr for FunctionPath[src]

type Err = Error

fn from_str(path: &str) -> Result<Self, Error>[src]

Parse a canonical, parameter-free path contained in an advisory

impl FromStr for Identifier[src]

type Err = Error

fn from_str(identifier: &str) -> Result<Self, Error>[src]

Parse an Identifier within a path

impl FromStr for Date[src]

type Err = Error

fn from_str(rfc3339_date: &str) -> Result<Self, Error>[src]

Create a Date from the given RFC 3339 date string

impl FromStr for Id[src]

type Err = Error

fn from_str(advisory_id: &str) -> Result<Self, Error>[src]

Create an Id from the given string

impl FromStr for Keyword[src]

type Err = Error

fn from_str(keyword: &str) -> Result<Self, Error>[src]

Create a new keyword

impl FromStr for Advisory[src]

type Err = Error

impl FromStr for Lockfile[src]

type Err = Error

impl FromStr for rustsec::package::Name[src]

impl FromStr for SourceId[src]

impl FromStr for rustsec::package::Version[src]

impl FromStr for rustsec::VersionReq[src]

type Err = Error

impl FromStr for rustsec::version::Version[src]

type Err = Error

Loading content...