35 lines
653 B
Rust
35 lines
653 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();
|
|
}
|
|
}
|