Size: a a a

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

2020 August 23

Ct

Casual tears in Rust — русскоговорящее сообществo
Вафель
Тем не менее без repr(c) miri выдаёт ту же ошибку
Без repr(C) тот код вообще UB, потому что твой Layout может не совпасть с тем, что там rustc себе напридумывал.
источник

В

Вафель in Rust — русскоговорящее сообществo
В таком случае получается что действительно мы в любом случае округляем по aligment и можно сразу использовать [usize] как предложил @MikailBag
источник

В

Вафель in Rust — русскоговорящее сообществo
Casual tears
Без repr(C) тот код вообще UB, потому что твой Layout может не совпасть с тем, что там rustc себе напридумывал.
Логично
источник

/

/bin/cat in Rust — русскоговорящее сообществo
layout или размер?
источник

/

/bin/cat in Rust — русскоговорящее сообществo
раст вроде может перемешать поля для оптимизации
источник

Э

Эрик in Rust — русскоговорящее сообществo
/bin/cat
раст вроде может перемешать поля для оптимизации
Не !Sized
источник

/

/bin/cat in Rust — русскоговорящее сообществo
В std не хватает доступа к низкоуровневым структурам
источник

V

Vladimir in Rust — русскоговорящее сообществo
Эрик
Не !Sized
а почему их не может ?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Vladimir
а почему их не может ?
Потому что два !Sized в одну структуру не впихнуть. И размера ты не знаешь, поэтому перед остальными ставить нельзя.
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Эрик
Потому что два !Sized в одну структуру не впихнуть. И размера ты не знаешь, поэтому перед остальными ставить нельзя.
А там length параметр добавить у этих !Sized?
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Ну всмысле в структуру добавить поле с размером)
источник

A

Adv0cat in Rust — русскоговорящее сообществo
и менять во время изменения !Sized
источник

V

Vladimir in Rust — русскоговорящее сообществo
Эрик
Потому что два !Sized в одну структуру не впихнуть. И размера ты не знаешь, поэтому перед остальными ставить нельзя.
Ну чисто с практической точки зрения да.
Но теоретически, дст не может сущестовать без размера, т.е. существуют в виде fat pointera с размером.

А зная размер всей структуры, и размеры каждых полей можно и посчитать размеры dst поля. А значит и переставить можно куда угодно.
Я думал ты в книге где-то видел что не переставляются
источник

В

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

А зная размер всей структуры, и размеры каждых полей можно и посчитать размеры dst поля. А значит и переставить можно куда угодно.
Я думал ты в книге где-то видел что не переставляются
Btw, fat ptr на структуру с последнем !Sized полем бедет хранить размер именно последнего поля, а не структуры
источник

Э

Эрик in Rust — русскоговорящее сообществo
Vladimir
Ну чисто с практической точки зрения да.
Но теоретически, дст не может сущестовать без размера, т.е. существуют в виде fat pointera с размером.

А зная размер всей структуры, и размеры каждых полей можно и посчитать размеры dst поля. А значит и переставить можно куда угодно.
Я думал ты в книге где-то видел что не переставляются
источник

V

Vladimir in Rust — русскоговорящее сообществo
Я ж говорю, что с практической точки да. Сейчас и создание на стеке - ведет к ошибке. ( А в сишке можно). Так что не показатель
источник

В

Вафель in Rust — русскоговорящее сообществo
Vladimir
Я ж говорю, что с практической точки да. Сейчас и создание на стеке - ведет к ошибке. ( А в сишке можно). Так что не показатель
На стеке создать можно кстати (спасибо коерсиям)
источник

V

Vladimir in Rust — русскоговорящее сообществo
Вафель
На стеке создать можно кстати (спасибо коерсиям)
покажи
источник

В

Вафель in Rust — русскоговорящее сообществo
Это не значит что rustc не может физически расположить поле sized после not_sized
источник

V

Vladimir in Rust — русскоговорящее сообществo
А понял, кастануть из fixed sized ссылки
источник