Trait FromStr

1.36.0 (const: unstable) · Source
pub trait FromStr: Sized {
    type Err;

    // Required method
    fn from_str(s: &str) -> Result<Self, Self::Err>;
}
Available on crate feature wayland and Linux only.
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.

§Input format and round-tripping

The input format expected by a type’s FromStr implementation depends on the type. Check the type’s documentation for the input formats it knows how to parse. Note that the input format of a type’s FromStr implementation might not necessarily accept the output format of its Display implementation, and even if it does, the Display implementation may not be lossless so the round-trip may lose information.

However, if a type has a lossless Display implementation whose output is meant to be conveniently machine-parseable and not just meant for human consumption, then the type may wish to accept the same format in FromStr, and document that usage. Having both Display and FromStr implementations where the result of Display cannot be parsed with FromStr may surprise users.

§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§

1.0.0 · Source

type Err

The associated error which can be returned from parsing.

Required Methods§

1.0.0 · Source

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

§

impl FromStr for cosmic::iced::daemon::program::graphics::text::cosmic_text::harfrust::Direction

§

type Err = &'static str

§

impl FromStr for CursorIcon

1.7.0 · Source§

impl FromStr for IpAddr

1.0.0 · Source§

impl FromStr for SocketAddr

Source§

impl FromStr for log::Level

Source§

impl FromStr for log::LevelFilter

Source§

impl FromStr for ron::value::Value

Source§

impl FromStr for ron::value::Value

Source§

impl FromStr for serde_json::value::Value

1.0.0 · Source§

impl FromStr for bool

1.20.0 · Source§

impl FromStr for char

1.0.0 · Source§

impl FromStr for f16

1.0.0 · Source§

impl FromStr for f32

1.0.0 · Source§

impl FromStr for f64

1.0.0 (const: unstable) · Source§

impl FromStr for i8

1.0.0 (const: unstable) · Source§

impl FromStr for i16

1.0.0 (const: unstable) · Source§

impl FromStr for i32

1.0.0 (const: unstable) · Source§

impl FromStr for i64

1.0.0 (const: unstable) · Source§

impl FromStr for i128

1.0.0 (const: unstable) · Source§

impl FromStr for isize

1.0.0 (const: unstable) · Source§

impl FromStr for u8

1.0.0 (const: unstable) · Source§

impl FromStr for u16

1.0.0 (const: unstable) · Source§

impl FromStr for u32

1.0.0 (const: unstable) · Source§

impl FromStr for u64

1.0.0 (const: unstable) · Source§

impl FromStr for u128

1.0.0 (const: unstable) · Source§

impl FromStr for usize

Source§

impl FromStr for cosmic::desktop::Mime

§

impl FromStr for SmolStr

§

impl FromStr for cosmic::iced::daemon::program::graphics::text::cosmic_text::harfrust::Feature

§

type Err = &'static str

§

impl FromStr for cosmic::iced::daemon::program::graphics::text::cosmic_text::harfrust::Language

§

type Err = &'static str

§

impl FromStr for cosmic::iced::daemon::program::graphics::text::cosmic_text::harfrust::Script

§

type Err = &'static str

§

impl FromStr for cosmic::iced::daemon::program::graphics::text::cosmic_text::harfrust::Variation

§

type Err = &'static str

§

impl FromStr for Tag

§

impl FromStr for cosmic::iced::Color

§

type Err = ParseError

Source§

impl FromStr for ByteString

1.85.0 · Source§

impl FromStr for CString

1.0.0 · Source§

impl FromStr for String

1.0.0 · Source§

impl FromStr for Ipv4Addr

1.0.0 · Source§

impl FromStr for Ipv6Addr

1.5.0 · Source§

impl FromStr for SocketAddrV4

1.5.0 · Source§

impl FromStr for SocketAddrV6

1.35.0 · Source§

impl FromStr for NonZero<i8>

1.35.0 · Source§

impl FromStr for NonZero<i16>

1.35.0 · Source§

impl FromStr for NonZero<i32>

1.35.0 · Source§

impl FromStr for NonZero<i64>

1.35.0 · Source§

impl FromStr for NonZero<i128>

1.35.0 · Source§

impl FromStr for NonZero<isize>

1.35.0 · Source§

impl FromStr for NonZero<u8>

1.35.0 · Source§

impl FromStr for NonZero<u16>

1.35.0 · Source§

impl FromStr for NonZero<u32>

1.35.0 · Source§

impl FromStr for NonZero<u64>

1.35.0 · Source§

impl FromStr for NonZero<u128>

1.35.0 · Source§

impl FromStr for NonZero<usize>

1.54.0 · Source§

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

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.

1.45.0 · Source§

impl FromStr for OsString

1.32.0 · Source§

impl FromStr for PathBuf

Source§

impl FromStr for bf16

Source§

impl FromStr for f16

Source§

impl FromStr for proc_macro2::Literal

Source§

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.

Source§

impl FromStr for Map<String, Value>

Source§

impl FromStr for serde_json::number::Number

Source§

impl FromStr for Url

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

Source§

impl FromStr for Braced

Source§

impl FromStr for Hyphenated

Source§

impl FromStr for Simple

Source§

impl FromStr for Urn

Source§

impl FromStr for Uuid

§

impl FromStr for Address

§

type Err = Error

§

impl FromStr for Angle

§

type Err = Error

§

impl FromStr for AppID

§

type Err = Error

§

impl FromStr for AspectRatio

§

type Err = Error

§

impl FromStr for Attribute

§

type Err = ParseError

§

impl FromStr for AuthMechanism

§

type Err = Error

§

impl FromStr for BString

§

type Err = Utf8Error

§

impl FromStr for BinaryOp

§

type Err = Error

§

impl FromStr for Binding

§

type Err = String

§

impl FromStr for ButtonPurpose

§

type Err = Error

§

impl FromStr for Category

§

type Err = Error

§

impl FromStr for Code

§

type Err = UnrecognizedCodeError

§

impl FromStr for Color

§

type Err = Error

§

impl FromStr for Color

§

type Err = ParseError

§

impl FromStr for Constant

§

type Err = Error

§

impl FromStr for CosmicPanelOuput

§

type Err = Error

§

impl FromStr for Date

§

type Err = Error

§

impl FromStr for DateTime

§

type Err = Error

§

impl FromStr for Device

§

type Err = Error

§

impl FromStr for DirPrefix

§

type Err = Error

§

impl FromStr for Direction

§

type Err = &'static str

§

impl FromStr for DirectionalPosition

§

type Err = Error

§

impl FromStr for EditBinding

§

type Err = Error

§

impl FromStr for EditMode

§

type Err = Error

§

impl FromStr for EnableBackground

§

type Err = Error

§

impl FromStr for Feature

§

type Err = &'static str

§

impl FromStr for FluentNumber

§

impl FromStr for Guid<'static>

§

type Err = Error

§

impl FromStr for ISOWeekDate

§

type Err = Error

§

impl FromStr for ImageRendering

§

type Err = &'static str

§

impl FromStr for Key

§

type Err = UnrecognizedKeyError

§

impl FromStr for Key

§

type Err = ParseError

§

impl FromStr for Key

§

type Err = ParseError

§

impl FromStr for Language

§

type Err = ParseError

§

impl FromStr for Language

§

type Err = &'static str

§

impl FromStr for Language

§

type Err = ParserError

§

impl FromStr for LanguageIdentifier

§

type Err = LanguageIdentifierError

§

impl FromStr for Length

§

type Err = Error

§

impl FromStr for Level

§

type Err = ParseLevelError

§

impl FromStr for LevelFilter

§

type Err = ParseLevelFilterError

§

impl FromStr for ListOp

§

type Err = Error

§

impl FromStr for MatchTarget

§

type Err = Error

§

impl FromStr for Mime

§

type Err = MimeParsingError

§

impl FromStr for NamedKey

§

type Err = UnrecognizedNamedKeyError

§

impl FromStr for Number

§

type Err = Error

§

impl FromStr for Operation

§

type Err = AtspiError

§

impl FromStr for Orientation

§

type Err = Error

§

impl FromStr for PaintOrder

§

type Err = ()

§

impl FromStr for PanelAnchor

§

type Err = Error

§

impl FromStr for PanelSize

§

type Err = Error

§

impl FromStr for Permission

§

type Err = Error

§

impl FromStr for Priority

§

type Err = Error

§

impl FromStr for PropertyKind

§

type Err = Error

§

impl FromStr for PropertyTarget

§

type Err = Error

§

impl FromStr for Quality

§

type Err = Error

§

impl FromStr for Regex

§

type Err = Error

§

impl FromStr for Regex

§

type Err = Error

§

impl FromStr for Region

§

type Err = ParseError

§

impl FromStr for Region

§

type Err = ParserError

§

impl FromStr for Script

§

type Err = ParseError

§

impl FromStr for Script

§

type Err = &'static str

§

impl FromStr for Script

§

type Err = ParserError

§

impl FromStr for SetOn

§

type Err = Error

§

impl FromStr for ShapeRendering

§

type Err = &'static str

§

impl FromStr for Signature

§

type Err = Error

§

impl FromStr for SignedDuration

§

type Err = Error

§

impl FromStr for Span

§

type Err = Error

§

impl FromStr for Srgb

§

type Err = ParseColorError

§

impl FromStr for State

§

impl FromStr for SubdivisionId

§

type Err = ParseError

§

impl FromStr for SubdivisionSuffix

§

type Err = ParseError

§

impl FromStr for Subtag

§

type Err = ParseError

§

impl FromStr for Subtag

§

type Err = ParseError

§

impl FromStr for TcpTransportFamily

§

type Err = Error

§

impl FromStr for TernaryOp

§

type Err = Error

§

impl FromStr for TestCompare

§

type Err = Error

§

impl FromStr for TestQual

§

type Err = Error

§

impl FromStr for TestTarget

§

type Err = Error

§

impl FromStr for TextRendering

§

type Err = &'static str

§

impl FromStr for Time

§

type Err = Error

§

impl FromStr for Timestamp

§

type Err = Error

§

impl FromStr for Transform

§

type Err = Error

§

impl FromStr for TransformOrigin

§

type Err = TransformOriginError

§

impl FromStr for UnaryOp

§

type Err = Error

§

impl FromStr for Variant

§

type Err = ParseError

§

impl FromStr for Variant

§

type Err = ParserError

§

impl FromStr for Variation

§

type Err = &'static str

§

impl FromStr for ViewBox

§

type Err = ViewBoxError

§

impl FromStr for Zoned

Parses a zoned timestamp from the Temporal datetime format.

See the fmt::temporal for more information on the precise format.

Note that this is only enabled when the std feature is enabled because it requires access to a global TimeZoneDatabase.

§

type Err = Error

Source§

impl<S> FromStr for Rgb<S, u8>

Source§

impl<S> FromStr for Alpha<Rgb<S, u8>, u8>

§

impl<S> FromStr for Ascii<S>
where S: FromStr,

§

type Err = <S as FromStr>::Err

§

impl<S> FromStr for UniCase<S>
where S: FromStr + AsRef<str>,

§

type Err = <S as FromStr>::Err

Source§

impl<const CAP: usize> FromStr for ArrayString<CAP>

§

impl<const N: usize> FromStr for TinyAsciiStr<N>

§

type Err = ParseError