From 3d965ae6a479636a13b2e2f2344e8d97bedece1f Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 17 Feb 2022 14:31:02 +0100 Subject: Change default parameter of `Cast` --- src/eval/value.rs | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) (limited to 'src/eval/value.rs') diff --git a/src/eval/value.rs b/src/eval/value.rs index 02ed6558..fffa729a 100644 --- a/src/eval/value.rs +++ b/src/eval/value.rs @@ -97,10 +97,7 @@ impl Value { } /// Try to cast the value into a specific type. - pub fn cast(self) -> StrResult - where - T: Cast, - { + pub fn cast(self) -> StrResult { T::cast(self) } @@ -327,7 +324,7 @@ pub trait Type { } /// Cast from a value to a specific type. -pub trait Cast>: Sized { +pub trait Cast: Sized { /// Check whether the value is castable to `Self`. fn is(value: &V) -> bool; @@ -345,7 +342,7 @@ macro_rules! primitive { const TYPE_NAME: &'static str = $name; } - impl Cast for $type { + impl Cast for $type { fn is(value: &Value) -> bool { matches!(value, Value::$variant(_) $(| Value::$other(_))*) } @@ -448,7 +445,7 @@ primitive! { Func: "function", Func, Class(v) => v.constructor() } primitive! { Args: "arguments", Args } primitive! { Class: "class", Class } -impl Cast for Value { +impl Cast for Value { fn is(_: &Value) -> bool { true } @@ -458,10 +455,7 @@ impl Cast for Value { } } -impl Cast for T -where - T: Cast, -{ +impl Cast> for T { fn is(value: &Spanned) -> bool { T::is(&value.v) } @@ -471,10 +465,7 @@ where } } -impl Cast for Spanned -where - T: Cast, -{ +impl Cast> for Spanned { fn is(value: &Spanned) -> bool { T::is(&value.v) } @@ -511,10 +502,7 @@ impl Default for Smart { } } -impl Cast for Option -where - T: Cast, -{ +impl Cast for Option { fn is(value: &Value) -> bool { matches!(value, Value::None) || T::is(value) } @@ -527,10 +515,7 @@ where } } -impl Cast for Smart -where - T: Cast, -{ +impl Cast for Smart { fn is(value: &Value) -> bool { matches!(value, Value::Auto) || T::is(value) } -- cgit v1.2.3