Size: a a a

Rust — русскоговорящее сообществo

2020 September 18

D

Denis in Rust — русскоговорящее сообществo
pub fn kek() -> Box<str> {
   Box::from(String::from("lol"))
}
источник

Z

Zymlex (Юрий) in Rust — русскоговорящее сообществo
Denis
ну например так:
pub fn kek() -> Box<[u8]> {
   vec![1, 2, 3].into_boxed_slice()
}
это чисто для слайса такое, а с любым другим?
источник

D

Denis in Rust — русскоговорящее сообществo
pub fn kek() -> Box<dyn std::fmt::Debug> {
   Box::new("Ahaha")
}
источник

Z

Zymlex (Юрий) in Rust — русскоговорящее сообществo
Denis
pub fn kek() -> Box<dyn std::fmt::Debug> {
   Box::new("Ahaha")
}
тут размер известен же
источник

D

Denis in Rust — русскоговорящее сообществo
Zymlex (Юрий)
тут размер известен же
пример в студию
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Denis
ну например так:
pub fn kek() -> Box<[u8]> {
   vec![1, 2, 3].into_boxed_slice()
}
Box::new лишний
источник

D

Denis in Rust — русскоговорящее сообществo
упс
да
источник

D

Denis in Rust — русскоговорящее сообществo
поправил, спс
источник

D

Denis in Rust — русскоговорящее сообществo
Zymlex (Юрий)
тут размер известен же
на всякисй случай: dyn Trait — неизвестный размер
источник

V

Vetro in Rust — русскоговорящее сообществo
Zymlex (Юрий)
тут размер известен же
Только у самого бокса

usize * 2
источник

V

Vladimir in Rust — русскоговорящее сообществo
Эрик
Тебе ссылку на ?Sized надо вернуть?
!Sized правильно ? - это когда может быть сайзед и не сайзед
источник

V

Vetro in Rust — русскоговорящее сообществo
Vladimir
!Sized правильно ? - это когда может быть сайзед и не сайзед
!Sized нет ведь

Только ?Sized, емнип
источник

V

Vladimir in Rust — русскоговорящее сообществo
Vetro
!Sized нет ведь

Только ?Sized, емнип
Я просто к тому, что баунд
?Sized = Sized | Unsized

А negative bound нету конечно. Точнее есть где-то в анстейбле и для автотрейтов.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Vladimir
Я просто к тому, что баунд
?Sized = Sized | Unsized

А negative bound нету конечно. Точнее есть где-то в анстейбле и для автотрейтов.
Negative bound и не будет
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Потому что если есть negative bounds, то имплемент трейта для типа это breaking change. Это треш
источник

V

Vladimir in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Потому что если есть negative bounds, то имплемент трейта для типа это breaking change. Это треш
На примере покажи плз
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Vladimir
На примере покажи плз
// 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

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Теперь если мы в crate1 сделаем impl Tr for S { }, то это сломает компиляцию crate2
Таким образом, имплемент трейта для типа становится брейкинг чендж
источник

V

Vladimir in Rust — русскоговорящее сообществo
Ну понятно. Но как жить если нужны автотрейты?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Страдать
источник