| // 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() {} | |
| } | |
| const trait Foomp = Hash; |