summaryrefslogtreecommitdiff
path: root/examples/simple.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2023-03-18 21:26:54 +0100
committerHampusM <hampus@hampusmat.com>2023-03-18 21:26:54 +0100
commit2d964b39da09ad82eccf09abdea73967bbff76f2 (patch)
treed5b43196d2402e62559e999adb65ef99f584eaf7 /examples/simple.rs
parent43e0bdb4cc598f199eacb63f755f30dc2108146b (diff)
feat: add support for generic traits
Diffstat (limited to 'examples/simple.rs')
-rw-r--r--examples/simple.rs37
1 files changed, 30 insertions, 7 deletions
diff --git a/examples/simple.rs b/examples/simple.rs
index cb6feb9..c5494da 100644
--- a/examples/simple.rs
+++ b/examples/simple.rs
@@ -7,7 +7,7 @@ trait SomeFoobar
fn do_something(&self) -> bool;
}
-trait Foo
+trait Foo<Xyz>
{
fn bar<Baz>(&self, num: u128) -> Baz;
@@ -16,12 +16,14 @@ trait Foo
fn baz<Foobar>(&self, name: &str, foobar: Foobar)
where
Foobar: SomeFoobar + Debug;
+
+ fn hello(&self, xyz: Xyz);
}
mock! {
MockFoo {}
- impl Foo for MockFoo {
+ impl<Xyz> Foo<Xyz> for MockFoo {
fn bar<Baz>(&self, num: u128) -> Baz;
fn biz<'a, Fiz: Debug, Bar>(&'a self, fiz: Fiz) -> &'a Bar;
@@ -29,6 +31,8 @@ mock! {
fn baz<Foobar>(&self, name: &str, foobar: Foobar)
where
Foobar: SomeFoobar + Debug;
+
+ fn hello(&self, xyz: Xyz);
}
}
@@ -36,19 +40,38 @@ fn main()
{
let mut mock_foo = MockFoo::new();
- mock_foo.expect_bar().returning(|_me, num| {
+ mock_foo.expect_bar::<_, Vec<u8>>().returning(|_me, num| {
println!("bar was called with {num}");
"Hello".to_string()
});
- mock_foo.expect_bar::<u128>().returning(|_me, num| {
+ mock_foo
+ .expect_bar::<u128, Vec<u8>>()
+ .returning(|_me, num| {
+ println!("bar was called with {num}");
+
+ 136322
+ });
+
+ mock_foo.expect_bar::<_, String>().returning(|_me, num| {
println!("bar was called with {num}");
- 136322
+ "Greetings".to_string()
});
- assert_eq!(mock_foo.bar::<String>(123), "Hello".to_string());
+ assert_eq!(
+ <MockFoo as Foo<Vec<u8>>>::bar::<String>(&mock_foo, 123),
+ "Hello".to_string()
+ );
+
+ assert_eq!(
+ <MockFoo as Foo<Vec<u8>>>::bar::<u128>(&mock_foo, 456),
+ 136322
+ );
- assert_eq!(mock_foo.bar::<u128>(456), 136322);
+ assert_eq!(
+ <MockFoo as Foo<String>>::bar::<String>(&mock_foo, 789),
+ "Greetings".to_string()
+ );
}