Size: a a a

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

2020 March 03

DF

Dollar Føølish in Rust — русскоговорящее сообществo
А как ты хочешь написать без =
источник

P

Pavel in Rust — русскоговорящее сообществo
Dollar Føølish
А как ты хочешь написать без =
я хочу писать без =. Если я хочу автообновлять патчи, я явно напишу 0.4.*
источник

P

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

p

polunin.ai in Rust — русскоговорящее сообществo
Вафель
У тебя в ошибке всё написанно. PartialEq = PartialEq<Self>, а как ты из dyn узнаешь Self?
Ну вот, я и не смог в это
источник

В

Вафель in Rust — русскоговорящее сообществo
Pavel
можно ж создать, просто за указателем хранить надо
да, но как ты создашь структуру сразу за указателем?)

unsized структуру можно создать либо с #![feature(unsised_locals)] либо структура с дженериком и unsize coersion.
источник

В

Вафель in Rust — русскоговорящее сообществo
Напрямую создать Lol из оригинального вопроса на стейбле — нельзя.
источник

P

Pavel in Rust — русскоговорящее сообществo
Вафель
да, но как ты создашь структуру сразу за указателем?)

unsized структуру можно создать либо с #![feature(unsised_locals)] либо структура с дженериком и unsize coersion.
когда Box::new(Struct{}) пишешь, она разве не сразу на хипе аллоцируется? разве перекидывается из стека в хип?
источник

В

Вафель in Rust — русскоговорящее сообществo
Pavel
когда Box::new(Struct{}) пишешь, она разве не сразу на хипе аллоцируется? разве перекидывается из стека в хип?
Нет, не сразу.

Box::new — обычная фунция, Box::new(Struct{}) по сути это
let tmp0 = Struct {};
Box::new(tmp0)
источник

В

Вафель in Rust — русскоговорящее сообществo
Поэтому и существует box x синтаксис которысразу в ипе делает (nightly-only, не факт что будет когда-либо стабилизирован)
источник

ph

pl 🦑 hk in Rust — русскоговорящее сообществo
источник

В

Вафель in Rust — русскоговорящее сообществo
А что тут такого?
источник

P

Pavel in Rust — русскоговорящее сообществo
Вафель
А что тут такого?
стекофервлоу же
источник

ph

pl 🦑 hk in Rust — русскоговорящее сообществo
Вафель
Нет, не сразу.

Box::new — обычная фунция, Box::new(Struct{}) по сути это
let tmp0 = Struct {};
Box::new(tmp0)
наглядная демонстрация этого ^
источник

P

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

В

Вафель in Rust — русскоговорящее сообществo
А
источник

В

Вафель in Rust — русскоговорящее сообществo
просто не понял к чему слово сейф
источник

ID

Ivan Dubrov in Rust — русскоговорящее сообществo
Вот так бывает полезно, например:
#[repr(transparent)]
pub struct Whatever(dyn SomeTraitObject);
источник

В

Вафель in Rust — русскоговорящее сообществo
ну и да, сейчас проверил,

#![feature(box_syntax)]
fn main() {
   let x = box [1488u64; 134217728];
}


работает
источник

АВ

Андрей Власов in Rust — русскоговорящее сообществo
Вафель
ну и да, сейчас проверил,

#![feature(box_syntax)]
fn main() {
   let x = box [1488u64; 134217728];
}


работает
Аллоцировать на стеке мы не бросим
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
Ну конструкшн может быть затратной операцией, так что хорошее нововведение
источник