#![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 {} |