You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use std::ops::{Add,Mul};#[divan::bench(args=[(3,4),(5,6)], types=[u8,u32,u64,u128,usize])]fnf<T>((x, y):(T,T)) -> (T,T)whereT:Copy + Add<Output = T> + Mul<Output = T>{(x + y, x * y)}fnmain(){println!("f::<u128>(3,4) = {:?}", f::<u128>((3,4)));println!("f::<u8>(3,4) = {:?}", f::<u8>((3,4)));
divan::main();}
produces this error:
error[E0412]: cannot find type `T` in this scope: bug_divan(bench)
--> benches/bug_divan.rs:4:18
|
4 | fn f<T>((x, y): (T,T)) -> (T,T)
| ^ not found in this scope
error[E0412]: cannot find type `T` in this scope
--> benches/bug_divan.rs:4:20
|
4 | fn f<T>((x, y): (T,T)) -> (T,T)
| ^ not found in this scope
For more information about this error, try `rustc --explain E0412`.
error: could not compile `fe_cards` (bench "bug_divan") due to 2 previous errors
When the divan attribute above f is removed; the program compiles and runs. I'm sorry, I'm new to rust and macros are beyond my ken, so I can't offer any suggestions.
Anyway; thank you for divan and I liked your talk. At the moment, I'm exploring the performance of different combinatorial algorithm implementations and the effects of different primitive type choises. divan is a nice fit.
The text was updated successfully, but these errors were encountered:
nvzqz
changed the title
Divan introduces type errors
The #[bench(args)] option does not support generic types
Nov 26, 2024
I didn't design the args option to work with a generic type argument. I'm in the middle of a refactor and may be able to fix this issue as a part of that.
The solution here is perhaps to have each f::<T> instantiated with its own args slice, rather than have a single args slice shared for all generic types. Perhaps a later optimization would be to create a single args slice if T is not reference in any of the argument types.
nvzqz
changed the title
The #[bench(args)] option does not support generic types
The #[bench(args)] option does not support generic arguments
Nov 26, 2024
This code:
produces this error:
When the divan attribute above
f
is removed; the program compiles and runs. I'm sorry, I'm new to rust and macros are beyond my ken, so I can't offer any suggestions.Anyway; thank you for divan and I liked your talk. At the moment, I'm exploring the performance of different combinatorial algorithm implementations and the effects of different primitive type choises. divan is a nice fit.
The text was updated successfully, but these errors were encountered: