mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	 0b3c617ec0
			
		
	
	
		0b3c617ec0
		
	
	
	
	
		
			
			When writing a type-driven search query in rustdoc, specifically one with more than one query element, non-existent types become generic parameters instead of auto-correcting (which is currently only done for single-element queries) or giving no result. You can also force a generic type parameter by writing `generic:T` (and can force it to not use a generic type parameter with something like `struct:T` or whatever, though if this happens it means the thing you're looking for doesn't exist and will give you no results). There is no syntax provided for specifying type constraints for generic type parameters. When you have a generic type parameter in a search query, it will only match up with generic type parameters in the actual function, not concrete types that match, not concrete types that implement a trait. It also strictly matches based on when they're the same or different, so `option<T>, option<U> -> option<U>` matches `Option::and`, but not `Option::or`. Similarly, `option<T>, option<T> -> option<T>`` matches `Option::or`, but not `Option::and`.
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // exact-check
 | |
| // ignore-order
 | |
| 
 | |
| const EXPECTED = [
 | |
|     {
 | |
|         query: '-> trait:Some',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'alef' },
 | |
|             { path: 'foo', name: 'alpha' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: '-> generic:T',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'bet' },
 | |
|             { path: 'foo', name: 'alef' },
 | |
|             { path: 'foo', name: 'beta' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'A -> B',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'bet' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'A -> A',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'beta' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'A, A',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'alternate' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'A, B',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'other' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'Other, Other',
 | |
|         others: [
 | |
|             { path: 'foo', name: 'other' },
 | |
|             { path: 'foo', name: 'alternate' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'generic:T',
 | |
|         in_args: [
 | |
|             { path: 'foo', name: 'bet' },
 | |
|             { path: 'foo', name: 'beta' },
 | |
|             { path: 'foo', name: 'other' },
 | |
|             { path: 'foo', name: 'alternate' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'generic:Other',
 | |
|         in_args: [
 | |
|             { path: 'foo', name: 'bet' },
 | |
|             { path: 'foo', name: 'beta' },
 | |
|             { path: 'foo', name: 'other' },
 | |
|             { path: 'foo', name: 'alternate' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'trait:Other',
 | |
|         in_args: [
 | |
|             { path: 'foo', name: 'other' },
 | |
|             { path: 'foo', name: 'alternate' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'Other',
 | |
|         in_args: [
 | |
|             { path: 'foo', name: 'other' },
 | |
|             { path: 'foo', name: 'alternate' },
 | |
|         ],
 | |
|     },
 | |
|     {
 | |
|         query: 'trait:T',
 | |
|         in_args: [],
 | |
|     },
 | |
| ];
 |