Size: a a a

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

2020 October 18

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Эрик
RawVec длину не менеджит.
У него cap ¯\_(ツ)_/¯
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
вафель 🧇
Потому что если длинна будет больше, чем на самом деле есть элементов — можно будет прочитать не инициализированную память.

А если больше чем capacity то ещё хуже
Да, теперь понял. Но это больше похоже на контракт который сложно описать правильно
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mag Pie
Да, теперь понял. Но это больше похоже на контракт который сложно описать правильно
Неописуемые контракты это и есть unsafe
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
вафель 🧇
Неописуемые контракты это и есть unsafe
Не совсем, есть семантическая разница между unsafe и unsound
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Len в терминах rust (как я это понимаю) safe но unsound.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mag Pie
Не совсем, есть семантическая разница между unsafe и unsound
а разве из моих слов следует обратное?
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Mag Pie
Да, теперь понял. Но это больше похоже на контракт который сложно описать правильно
Не особенно сложно. Просто в контрактах обычно используются ghost-переменные и -структуры данных.
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
Alexander Tchitchigin
Не особенно сложно. Просто в контрактах обычно используются ghost-переменные и -структуры данных.
Это я помню, PhantomData
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Mag Pie
Это я помню, PhantomData
Нет, это другое. 🙂
источник

Э

Эрик in Rust — русскоговорящее сообществo
Mag Pie
Не совсем, есть семантическая разница между unsafe и unsound
Нет, unsound и unsafe — разные вещи. Unsafe часто и внутри модуля используется, даже если функция не публична, но имеет инварианты.
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Я про формальные контракты и их статическую верификацию.
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mag Pie
Len в терминах rust (как я это понимаю) safe но unsound.
Оно unsound только если не unsafe :) Если бы оно было unsafe оно бы было не unsound.

Впрочем опять-же: говорить про soundness поля странно, unsound может быть код который его использует, предполагая некоторые гарантии, если их на самом деле нет.

По скольку код вектора гарантирует то, на что потом полагается — то он sound. (но для большей точности хотелось бы вынести доступ к полю len в unsafe, чтобы подчеркнуть что оно должно что-то гарантировать).
источник

FI

Fox Ice in Rust — русскоговорящее сообществo
Здравствуйте, пишу XML парсер и появился такой вопрос. Я слышал о поточной и пакетной обработке данных, какой подход больше подходит для моей задачи? (Или я вообще на так понял для чего они нужны?)
источник

Э

Эрик in Rust — русскоговорящее сообществo
Fox Ice
Здравствуйте, пишу XML парсер и появился такой вопрос. Я слышал о поточной и пакетной обработке данных, какой подход больше подходит для моей задачи? (Или я вообще на так понял для чего они нужны?)
источник

AT

Alexander Tchitchigi... in Rust — русскоговорящее сообществo
Fox Ice
Здравствуйте, пишу XML парсер и появился такой вопрос. Я слышал о поточной и пакетной обработке данных, какой подход больше подходит для моей задачи? (Или я вообще на так понял для чего они нужны?)
XML и так, и так обрабатывают: DOM vs. SAX.
источник

FI

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

MP

Mag Pie in Rust — русскоговорящее сообществo
https://doc.rust-lang.org/reference/unsafety.html
«Unsafe operations are those that can potentially violate the memory-safety guarantees of Rust's static semantics.
The following language level features cannot be used in the safe subset of Rust:
• Dereferencing a raw pointer.
• Reading or writing a mutable or external static variable.
• Accessing a field of a union, other than to assign to it.
• Calling an unsafe function (including an intrinsic or foreign function).
• Implementing an unsafe trait»
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mag Pie
https://doc.rust-lang.org/reference/unsafety.html
«Unsafe operations are those that can potentially violate the memory-safety guarantees of Rust's static semantics.
The following language level features cannot be used in the safe subset of Rust:
• Dereferencing a raw pointer.
• Reading or writing a mutable or external static variable.
• Accessing a field of a union, other than to assign to it.
• Calling an unsafe function (including an intrinsic or foreign function).
• Implementing an unsafe trait»
unsound это то, что позволяет вызвать unsafe операцию (или точнее сказать UB?) в safe коде
источник

MP

Mag Pie in Rust — русскоговорящее сообществo
вафель 🧇
unsound это то, что позволяет вызвать unsafe операцию (или точнее сказать UB?) в safe коде
Да, например присвоение длинны вектора внутри имплементации. Я так это понял
источник

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Mag Pie
Да, например присвоение длинны вектора внутри имплементации. Я так это понял
Нет. unsound был бы, если бы в имплементации была ошибка.
источник