D
pub fn kek() -> Box<str> {
Box::from(String::from("lol"))
}Size: a a a
D
pub fn kek() -> Box<str> {
Box::from(String::from("lol"))
}Z
pub fn kek() -> Box<[u8]> {
vec![1, 2, 3].into_boxed_slice()
}D
pub fn kek() -> Box<dyn std::fmt::Debug> {
Box::new("Ahaha")
}Z
pub fn kek() -> Box<dyn std::fmt::Debug> {
Box::new("Ahaha")
}D
в🧇
pub fn kek() -> Box<[u8]> {
vec![1, 2, 3].into_boxed_slice()
}Box::new лишнийD
D
D
dyn Trait — неизвестный размерV
V
V
V
EG
EG
V
EG
// crate1
pub struct S;
pub trait Tr { }
// crate2
use crate1::*;
trait Q { }
impl<T> Q for T where T: !Tr { }
fn<T: Q> f(_x: T) { }
fn g() { f(S) }
EG
crate1 сделаем impl Tr for S { }, то это сломает компиляцию crate2V
EG