| // Test traits |
| |
| trait Foo { |
| fn bar(x: i32 ) -> Baz< U> { Baz::new() |
| } |
| |
| fn baz(a: AAAAAAAAAAAAAAAAAAAAAA, |
| b: BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) |
| -> RetType; |
| |
| fn foo(a: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, // Another comment |
| b: BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB) |
| -> RetType ; // Some comment |
| |
| fn baz(&mut self ) -> i32 ; |
| |
| fn increment(& mut self, x: i32 ); |
| |
| fn read(&mut self, x: BufReader<R> /* Used to be MemReader */) |
| where R: Read; |
| } |
| |
| pub trait WriteMessage { |
| fn write_message (&mut self, &FrontendMessage) -> io::Result<()>; |
| } |
| |
| trait Runnable { |
| fn handler(self: & Runnable ); |
| } |
| |
| trait TraitWithExpr { |
| fn fn_with_expr(x: [i32; 1]); |
| } |
| |
| trait Test { |
| fn read_struct<T, F>(&mut self, s_name: &str, len: usize, f: F) -> Result<T, Self::Error> where F: FnOnce(&mut Self) -> Result<T, Self::Error>; |
| } |
| |
| trait T<> {} |
| |
| trait Foo { type Bar: Baz; type Inner: Foo = Box< Foo >; } |
| |
| trait ConstCheck<T>:Foo where T: Baz { |
| const J: i32; |
| } |
| |
| trait Tttttttttttttttttttttttttttttttttttttttttttttttttttttttttt<T> |
| where T: Foo {} |
| |
| trait Ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt<T> where T: Foo {} |
| |
| trait FooBar<T> : Tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt where J: Bar { fn test(); } |
| |
| trait WhereList<T, J> where T: Foo, J: Bar {} |
| |
| trait X /* comment */ {} |
| trait Y // comment |
| { |
| } |
| |
| // #2055 |
| pub trait Foo: |
| // A and C |
| A + C |
| // and B |
| + B |
| {} |
| |
| // #2158 |
| trait Foo { |
| type ItRev = <MergingUntypedTimeSeries<SliceSeries<SliceWindow>> as UntypedTimeSeries>::IterRev; |
| type IteRev = <MergingUntypedTimeSeries<SliceSeries<SliceWindow>> as UntypedTimeSeries>::IterRev; |
| } |
| |
| // #2331 |
| trait MyTrait<AAAAAAAAAAAAAAAAAAAA, BBBBBBBBBBBBBBBBBBBB, CCCCCCCCCCCCCCCCCCCC, DDDDDDDDDDDDDDDDDDDD> { |
| fn foo() {} |
| } |
| |
| // Trait aliases |
| trait FooBar = |
| Foo |
| + Bar; |
| trait FooBar <A, B, C>= |
| Foo |
| + Bar; |
| pub trait FooBar = |
| Foo |
| + Bar; |
| pub trait FooBar <A, B, C>= |
| Foo |
| + Bar; |
| trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD; |
| pub trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD; |
| trait AAAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDD; |
| trait AAAAAAAAAAAAAAAAAA = BBBBBBBBBBBBBBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCC + DDDDDDDDDDDDDDDDDDD; |
| trait AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<A, B, C, D, E> = FooBar; |
| trait AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<A, B, C, D, E> = FooBar; |
| #[rustfmt::skip] |
| trait FooBar = Foo |
| + Bar; |
| |
| // #2637 |
| auto trait Example {} |
| pub auto trait PubExample {} |
| pub unsafe auto trait PubUnsafeExample {} |
| |
| // #3006 |
| trait Foo<'a> { |
| type Bar< 'a >; |
| } |
| |
| impl<'a> Foo<'a> for i32 { |
| type Bar< 'a > = i32; |
| } |
| |
| // #3092 |
| pub mod test { |
| pub trait ATraitWithALooongName {} |
| pub trait ATrait |
| :ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName + ATraitWithALooongName |
| { |
| } |
| } |
| |
| // Trait aliases with where clauses. |
| trait A = where for<'b> &'b Self: Send; |
| |
| trait B = where for<'b> &'b Self: Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCC; |
| trait B = where for<'b> &'b Self: Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCC; |
| trait B = where |
| for<'b> &'b Self: |
| Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCCCCCCCCCCCCCC; |
| trait B = where |
| for<'b> &'b Self: |
| Send + Clone + Copy + SomeTrait + AAAAAAAA + BBBBBBB + CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC; |
| |
| trait B = where |
| for<'b> &'b Self: |
| Send |
| + Clone |
| + Copy |
| + SomeTrait |
| + AAAAAAAA |
| + BBBBBBB |
| + CCCCCCCCC |
| + DDDDDDD |
| + DDDDDDDD |
| + DDDDDDDDD |
| + EEEEEEE; |
| |
| trait A<'a, 'b, 'c> = Debug<T> + Foo where for<'b> &'b Self: Send; |
| |
| trait B<'a, 'b, 'c> = Debug<T> +Foo |
| where for<'b> &'b Self: |
| Send |
| + Clone |
| + Copy |
| + SomeTrait |
| + AAAAAAAA |
| + BBBBBBB |
| + CCCCCCCCC |
| + DDDDDDD; |
| |
| trait B<'a, 'b, 'c,T> = Debug<'a, T> where for<'b> &'b Self: |
| Send |
| + Clone |
| + Copy |
| + SomeTrait |
| + AAAAAAAA |
| + BBBBBBB |
| + CCCCCCCCC |
| + DDDDDDD |
| + DDDDDDDD |
| + DDDDDDDDD |
| + EEEEEEE; |
| |
| trait Visible { |
| pub const C: i32; |
| pub type T; |
| pub fn f(); |
| pub fn g() {} |
| } |