diff options
Diffstat (limited to 'tests/tests.rs')
-rw-r--r-- | tests/tests.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/tests.rs b/tests/tests.rs index 4d09847..652be48 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -152,3 +152,28 @@ trait AsyncWithCallback: Sync { async fn test1(&self) -> Self::A; async fn fun_with_callback<F: Fn(Self::A) + Sync + Send + 'static>(&self, a: F); } + +#[dynamize::dynamize] +trait TypeTraitBound { + type A: std::error::Error; + + fn foobar(&self, text: &str) -> Result<i32, Self::A>; +} + +fn type_trait_bound_test<T: TypeTraitBound>(t: T) { + let dyn_trait: &dyn DynTypeTraitBound = &t; + let _: Result<i32, Box<dyn std::error::Error>> = dyn_trait.foobar("test"); +} + +#[dynamize::dynamize] +trait TypeTraitBoundStatic { + type A: std::error::Error + 'static; + + fn foobar(&self, text: &str) -> Result<i32, Self::A>; +} + +fn type_trait_bound_static_test( + t: Box<dyn DynTypeTraitBoundStatic>, +) -> Option<Box<dyn std::error::Error>> { + t.foobar("test").err() +} |