replace impl_many! with impl_try_from
This commit is contained in:
parent
c11cfaa26a
commit
f555d2fe80
2 changed files with 13 additions and 13 deletions
12
src/util.rs
12
src/util.rs
|
@ -6,20 +6,20 @@ use serde::{Deserialize, Serialize};
|
||||||
use std::{fmt, path::Path};
|
use std::{fmt, path::Path};
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! impl_many {
|
macro_rules! impl_try_from {
|
||||||
($trait:ident<$typ:ty> $fn_name:ident{
|
($typ:ty {
|
||||||
$(
|
$(
|
||||||
for $for:ty => |$var:ident| $code:expr
|
for $for:ty => |$arg:ident| $code:expr
|
||||||
);*;
|
);*;
|
||||||
}) => {
|
}) => {
|
||||||
$(impl $trait<$typ> for $for {
|
$(impl TryFrom<$typ> for $for {
|
||||||
type Error = anyhow::Error;
|
type Error = anyhow::Error;
|
||||||
|
|
||||||
fn $fn_name($var: $typ) -> Result<Self> {
|
fn try_from($arg: $typ) -> Result<Self> {
|
||||||
$code
|
$code
|
||||||
}
|
}
|
||||||
})*
|
})*
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/// read an scss file, replace all environment variable references within it and
|
/// read an scss file, replace all environment variable references within it and
|
||||||
|
|
14
src/value.rs
14
src/value.rs
|
@ -6,7 +6,7 @@ use regex::Regex;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{convert::TryFrom, fmt};
|
use std::{convert::TryFrom, fmt};
|
||||||
|
|
||||||
use crate::impl_many;
|
use crate::impl_try_from;
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Deserialize, Serialize, derive_more::From)]
|
#[derive(Clone, PartialEq, Deserialize, Serialize, derive_more::From)]
|
||||||
pub struct PrimitiveValue(String);
|
pub struct PrimitiveValue(String);
|
||||||
|
@ -32,21 +32,21 @@ impl std::str::FromStr for PrimitiveValue {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl_many!(TryFrom<PrimitiveValue> try_from {
|
impl_try_from!(PrimitiveValue {
|
||||||
for String => |x| x.as_string();
|
for String => |x| x.as_string();
|
||||||
for f64 => |x| x.as_f64();
|
for f64 => |x| x.as_f64();
|
||||||
for bool => |x| x.as_bool();
|
for bool => |x| x.as_bool();
|
||||||
});
|
});
|
||||||
|
|
||||||
impl From<i32> for PrimitiveValue {
|
impl From<bool> for PrimitiveValue {
|
||||||
fn from(x: i32) -> Self {
|
fn from(x: bool) -> Self {
|
||||||
PrimitiveValue(format!("{}", x))
|
PrimitiveValue(format!("{}", x))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<bool> for PrimitiveValue {
|
impl From<i32> for PrimitiveValue {
|
||||||
fn from(x: bool) -> Self {
|
fn from(s: i32) -> Self {
|
||||||
PrimitiveValue(format!("{}", x))
|
PrimitiveValue(s.to_string())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue