mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			654 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			654 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
//@ run-pass
 | 
						|
#![allow(dead_code)]
 | 
						|
use std::io::Write;
 | 
						|
use std::fmt;
 | 
						|
 | 
						|
struct Foo<'a> {
 | 
						|
    writer: &'a mut (dyn Write+'a),
 | 
						|
    other: &'a str,
 | 
						|
}
 | 
						|
 | 
						|
struct Bar;
 | 
						|
 | 
						|
impl fmt::Write for Bar {
 | 
						|
    fn write_str(&mut self, _: &str) -> fmt::Result {
 | 
						|
        Ok(())
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
fn borrowing_writer_from_struct_and_formatting_struct_field(foo: Foo) {
 | 
						|
    write!(foo.writer, "{}", foo.other).unwrap();
 | 
						|
}
 | 
						|
 | 
						|
fn main() {
 | 
						|
    let mut w = Vec::new();
 | 
						|
    write!(&mut w as &mut dyn Write, "").unwrap();
 | 
						|
    write!(&mut w, "").unwrap(); // should coerce
 | 
						|
    println!("ok");
 | 
						|
 | 
						|
    let mut s = Bar;
 | 
						|
    {
 | 
						|
        use std::fmt::Write;
 | 
						|
        write!(&mut s, "test").unwrap();
 | 
						|
    }
 | 
						|
}
 |