2017-12-23 15:38:09 -06:00
|
|
|
use std::fmt;
|
|
|
|
|
|
|
|
fn foo() -> Box<impl fmt::Debug+?Sized> {
|
|
|
|
let x : Box<[u8]> = Box::new([0]);
|
|
|
|
x
|
|
|
|
}
|
|
|
|
fn bar() -> Box<impl fmt::Debug+?Sized> {
|
2019-05-28 13:46:13 -05:00
|
|
|
let y: Box<dyn fmt::Debug> = Box::new([0]);
|
2017-12-23 15:38:09 -06:00
|
|
|
y
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let f = foo();
|
|
|
|
let b = bar();
|
|
|
|
|
|
|
|
// this is an `*mut [u8]` in practice
|
|
|
|
let f_raw : *mut _ = Box::into_raw(f);
|
|
|
|
// this is an `*mut fmt::Debug` in practice
|
|
|
|
let mut b_raw = Box::into_raw(b);
|
|
|
|
// ... and they should not be mixable
|
2022-02-11 01:18:06 -06:00
|
|
|
b_raw = f_raw as *mut _; //~ ERROR is invalid
|
2017-12-23 15:38:09 -06:00
|
|
|
}
|