mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			39 lines
		
	
	
		
			861 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			861 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // https://github.com/rust-lang/rust/issues/60726
 | |
| #![crate_name="foo"]
 | |
| 
 | |
| use std::marker::PhantomData;
 | |
| 
 | |
| pub struct True;
 | |
| pub struct False;
 | |
| 
 | |
| pub trait InterfaceType{
 | |
|     type Send;
 | |
| }
 | |
| 
 | |
| 
 | |
| pub struct FooInterface<T>(PhantomData<fn()->T>);
 | |
| 
 | |
| impl<T> InterfaceType for FooInterface<T> {
 | |
|     type Send=False;
 | |
| }
 | |
| 
 | |
| 
 | |
| pub struct DynTrait<I>{
 | |
|     _interface:PhantomData<fn()->I>,
 | |
|     _unsync_unsend:PhantomData<::std::rc::Rc<()>>,
 | |
| }
 | |
| 
 | |
| unsafe impl<I> Send for DynTrait<I>
 | |
| where
 | |
|     I:InterfaceType<Send=True>
 | |
| {}
 | |
| 
 | |
| //@ has foo/struct.IntoIter.html
 | |
| //@ has - '//*[@id="synthetic-implementations-list"]//*[@class="impl"]//h3[@class="code-header"]' \
 | |
| // "impl<T> !Send for IntoIter<T>"
 | |
| //@ has - '//*[@id="synthetic-implementations-list"]//*[@class="impl"]//h3[@class="code-header"]' \
 | |
| // "impl<T> !Sync for IntoIter<T>"
 | |
| pub struct IntoIter<T>{
 | |
|     hello:DynTrait<FooInterface<T>>,
 | |
| }
 | 
