1
0
mirror of https://github.com/actix/actix-extras.git synced 2025-02-02 10:59:03 +01:00

41 lines
991 B
Rust
Raw Normal View History

use std::{path::PathBuf, str::FromStr};
use crate::Error;
2022-07-31 21:12:19 +02:00
/// A specialized `FromStr` trait that returns [`AtError`] errors
pub trait Parse: Sized {
2022-07-31 21:12:19 +02:00
/// Parse `Self` from `string`.
fn parse(string: &str) -> Result<Self, Error>;
}
impl Parse for bool {
fn parse(string: &str) -> Result<Self, Error> {
Self::from_str(string).map_err(Error::from)
}
}
macro_rules! impl_parse_for_int_type {
($($int_type:ty),+ $(,)?) => {
$(
impl Parse for $int_type {
fn parse(string: &str) -> Result<Self, Error> {
Self::from_str(string).map_err(Error::from)
}
}
)+
}
}
impl_parse_for_int_type![i8, i16, i32, i64, i128, u8, u16, u32, u64, u128];
impl Parse for String {
fn parse(string: &str) -> Result<Self, Error> {
Ok(string.to_string())
}
}
impl Parse for PathBuf {
fn parse(string: &str) -> Result<Self, Error> {
Ok(PathBuf::from(string))
}
}