27 lines
537 B
Rust
27 lines
537 B
Rust
|
#![feature(thin_box)]
|
||
|
//@ run-pass
|
||
|
use std::boxed::ThinBox;
|
||
|
use std::error::Error;
|
||
|
use std::ops::Deref;
|
||
|
use std::fmt;
|
||
|
|
||
|
fn main() {
|
||
|
let expected = "Foo error!";
|
||
|
let a: ThinBox<dyn Error> = ThinBox::new_unsize(Foo(expected));
|
||
|
let a = a.deref();
|
||
|
let msg = a.to_string();
|
||
|
assert_eq!(expected, msg);
|
||
|
}
|
||
|
|
||
|
#[derive(Debug)]
|
||
|
#[repr(align(1024))]
|
||
|
struct Foo(&'static str);
|
||
|
|
||
|
impl fmt::Display for Foo {
|
||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||
|
write!(f, "{}", self.0)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl Error for Foo {}
|