Size: a a a

2021 March 04

ΑZ

Αλεχ Zhukovsky in rust_offtopic
если есть то должен быть ансейф
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
имеется ввиде предусловия нарушающие мемори сейфти
источник

RB

Roman Blog in rust_offtopic
Αλεχ Zhukovsky
ну в расте простой критерий: есть ли предусловия на аргументы или нет
Там ничего нет
источник

RB

Roman Blog in rust_offtopic
оно полностью safe
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Roman Blog
Там ничего нет
второй пример: FFI, да
источник

RB

Roman Blog in rust_offtopic
и в этом проблема. И эта та причина, почему unsafe Не раст
источник

RB

Roman Blog in rust_offtopic
там всё, что ты используешь - это внешние для раста сущности о которых он нихрена не знает
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Roman Blog
и в этом проблема. И эта та причина, почему unsafe Не раст
сишная функция экспортируемая через extern unsafe fn это не раст? Ну, философский вопрос опять же
источник

А

Алексей in rust_offtopic
Roman Blog
нет, не можешь
если бы это было так, то никакого ffi в расте не было бы
источник

RB

Roman Blog in rust_offtopic
Αλεχ Zhukovsky
сишная функция экспортируемая через extern unsafe fn это не раст? Ну, философский вопрос опять же
это не сишная функция - это интринсик из сишного компилятора. Но ключевая проблема здесь в том, что номинально это сущность раста, а реально нет
источник

D

Dima in rust_offtopic
Roman Blog
Вот смотри, давай простой пример. Вот у нас есть интринсики, там есть xor симвдовый
Не все интинсики ансейф
источник

RB

Roman Blog in rust_offtopic
Алексей
если бы это было так, то никакого ffi в расте не было бы
А его и нет. Тебе нужно превращать раст-структуру в сишную. И использовать сишные же типы. И не потому, что ffi
источник

RB

Roman Blog in rust_offtopic
Dima
Не все интинсики ансейф
ну авось к каким-то криколхозили что-то руками, но в любом случае я видел недавно как очевидный safe интринсик был unsafe
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Roman Blog
это не сишная функция - это интринсик из сишного компилятора. Но ключевая проблема здесь в том, что номинально это сущность раста, а реально нет
для меня сущности это в первую очередь сигнатуры, и во вторую - реализации. Это раз
два - ансейф по сути способ грепнуть места в которых можно накосячит с мемори сейфти. Соответственно использовать его надо руководствуясь скорее здравым смыслом. Если его не хватает, то просто писать ансейф только там где компилятор без него не дает компилить.
источник

RB

Roman Blog in rust_offtopic
да, ты можешь там похакать на уровне компилятора и сказать "ну вот это пусть будет safe", но это не меняет с итуации
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Roman Blog
ну авось к каким-то криколхозили что-то руками, но в любом случае я видел недавно как очевидный safe интринсик был unsafe
unsafe - это не означает "Небезопасно", это озанчает "не смог проверить rustc"
источник

А

Алексей in rust_offtopic
Roman Blog
А его и нет. Тебе нужно превращать раст-структуру в сишную. И использовать сишные же типы. И не потому, что ffi
в каком смысле превращать?
источник

RB

Roman Blog in rust_offtopic
Αλεχ Zhukovsky
для меня сущности это в первую очередь сигнатуры, и во вторую - реализации. Это раз
два - ансейф по сути способ грепнуть места в которых можно накосячит с мемори сейфти. Соответственно использовать его надо руководствуясь скорее здравым смыслом. Если его не хватает, то просто писать ансейф только там где компилятор без него не дает компилить.
Нет, нет. Всё не так. В этом и проблема. unsafe отравляет весь код.  По определению. А значит, что никакой rustc не гарантирует ничего. Т.е. rustc тебе не проверит то - валиден ли safe-api для вектора
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Roman Blog
Нет, нет. Всё не так. В этом и проблема. unsafe отравляет весь код.  По определению. А значит, что никакой rustc не гарантирует ничего. Т.е. rustc тебе не проверит то - валиден ли safe-api для вектора
не совсем так, после митинга отвечу
источник

RB

Roman Blog in rust_offtopic
он проверит только базовые инварианты, которые используются в его реализации
источник