Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- trait T1 {
- fn f1(&self) -> i32;
- }
- trait T2 {
- fn f2(&self) -> f32;
- }
- struct S1 {
- id: i32,
- }
- struct S2 {
- iid: i32,
- fid: f32,
- }
- impl T1 for S1 {
- fn f1(&self) -> i32 { self.id }
- }
- impl T1 for S2 {
- fn f1(&self) -> i32 { self.iid }
- }
- impl T2 for S2 {
- fn f2(&self) -> f32 { self.fid }
- }
- // wish: fn test<T: T1 - T2>
- fn test<T: T1>(val: T) {
- println!("test<T: T1> = {}", val.f1());
- }
- // wish: fn test<T: T1 + T2>
- fn test2<T: T1 + T2>(val: T) {
- println!("test<T: T1 + T2> = {}, {}", val.f1(), val.f2());
- }
- fn main() {
- let s1 = S1 { id: 32 };
- let s2 = S2 { iid: 64, fid: 128.0 };
- test(s1);
- test2(s2); // wish: test(s2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement