@@ -115,6 +115,30 @@ can be matched with the following queries:
115115Each of the above queries is progressively looser, except the last one
116116would not match ` dyn Iterator ` , since that's not a type parameter.
117117
118+ If a bound has multiple associated types, specifying the name allows you to
119+ pick which one gets matched. If no name is specified, then the query will
120+ match of any of them. For example,
121+ 
122+ ``` rust 
123+ pub  trait  MyTrait  {
124+     type  First ;
125+     type  Second ;
126+ }
127+ 
128+ ///  This function can be found using the following search queries:
129+ /// 
130+ ///      MyTrait<First=u8, Second=u32> -> bool
131+ ///      MyTrait<u32, First=u8> -> bool
132+ ///      MyTrait<Second=u32> -> bool
133+ ///      MyTrait<u32, u8> -> bool
134+ /// 
135+ ///  The following queries, however, will *not* match it:
136+ /// 
137+ ///      MyTrait<First=u32> -> bool
138+ ///      MyTrait<u32, u32> -> bool
139+ pub  fn  my_fn (x :  impl  MyTrait <First = u8 , Second = u32 >) ->  bool  { true  }
140+ ``` 
141+ 
118142Generics and function parameters are order-agnostic, but sensitive to nesting
119143and number of matches. For example, a function with the signature
120144` fn read_all(&mut self: impl Read) -> Result<Vec<u8>, Error> ` 
@@ -143,6 +167,10 @@ Most of these limitations should be addressed in future version of Rustdoc.
143167    with that bound, it'll match, but ` option<T> -> T where T: Default ` 
144168    cannot be precisely searched for (use ` option<Default> -> Default ` ).
145169
170+   *  Supertraits, type aliases, and Deref are all ignored. Search mostly
171+     operates on type signatures * as written* , and not as they are
172+     represented within the compiler.
173+ 
146174  *  Type parameters match type parameters, such that ` Option<A> `  matches
147175    ` Option<T> ` , but never match concrete types in function signatures.
148176    A trait named as if it were a type, such as ` Option<Read> ` , will match
0 commit comments