| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -705,8 +705,14 @@ for more information.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					# Representing opaque structs
 | 
					 | 
					 | 
					 | 
					# Representing opaque structs
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Sometimes, a C library wants to provide a pointer to something, but not let you
 | 
					 | 
					 | 
					 | 
					Sometimes, a C library wants to provide a pointer to something, but not let you
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					know the internal details of the thing it wants. The simplest way is to use a
 | 
					 | 
					 | 
					 | 
					know the internal details of the thing it wants. The simplest way is to use "extern types".
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					`void *` argument:
 | 
					 | 
					 | 
					 | 
					But it's currently (as of June 2021) unstable and has some unresolved questions,
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					see the [RFC page][extern-type-rfc] and the [tracking issue][extern-type-issue] for more details.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[extern-type-issue]: https://github.com/rust-lang/rust/issues/43467
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					[extern-type-rfc]: https://rust-lang.github.io/rfcs/1861-extern-types.html
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					Alternatively, we can use a `void *` argument:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					```c
 | 
					 | 
					 | 
					 | 
					```c
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void foo(void *arg);
 | 
					 | 
					 | 
					 | 
					void foo(void *arg);
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |