Информация об изменениях

Сообщение Re[10]: Rust как замена C++ от 19.12.2019 9:22

Изменено 19.12.2019 9:23 FR

Re[10]: Rust как замена C++
Здравствуйте, Mamut, Вы писали:


M>Во всех местах, где надо использовать mod.


Нет во всех местах где нужно использовать используешь use.
А mod можно (и необходимо) использовать только в ограниченных местах, это файл main.rs (lib.rs)
и файлы определяющие модули в папках (по умолчанию mod.rs).
В остальных местах будет ошибка компиляции.
Логика обязательного и не автоматического указания mod.rs от меня тоже ускользает, но что есть
то есть.

FR>>Фактически этим выражением мы просто вставляем в исходник содержимое файла A.rs

FR>>Польза от таких модулей вполне заметная особенно при использовании условной компиляции,
FR>>ну и исключаем лишнюю сущность которая есть во многих языках namespace.

M>Так в том-то и дело, что исходник не вставляем и namespace остается. Потому что нам нужно все равно делать потом use module::что-то-там (вот и namespace). Если бы действительно вставляли (аналог ОКамловского open), то можно было бы пользоваться функциями из модуля безо всякого use.


open в OCaml это скорее аналог use. Там есть и include, который ближе к mod.

M>Условная компиляция к модулям, имхо, вообще не имеет отношения


Ну как раз с модулями ее и удобно использовать как замену для бедных параметризируемых
модулей.

FR>>Вообще модули перекочевали в rust прямиком из OCaml и сохранили оттуда некоторые

FR>>странности, и к сожалению растеряли по пути свою первоклассность.

M>Похоже, что авторы Rust'а не поняли, что такое модулив ОКамле, и перетянули часть синтаксических особенностей без единой полезности.


Ну да потеряли много.
Но в общем то логичность модулей раста ничем ни хуже и не лучше чем в большинстве других
языков. Мелкие кривости есть практически у всех.
Re[10]: Rust как замена C++
Здравствуйте, Mamut, Вы писали:


M>Во всех местах, где надо использовать mod.


Нет во всех местах где нужно использовать используешь use.
А mod можно (и необходимо) использовать только в ограниченных местах, это файл main.rs (lib.rs)
и файлы определяющие модули в папках (по умолчанию mod.rs).
В остальных местах будет ошибка компиляции.
Логика обязательного и не автоматического указания mod A; от меня тоже ускользает, но что есть
то есть.

FR>>Фактически этим выражением мы просто вставляем в исходник содержимое файла A.rs

FR>>Польза от таких модулей вполне заметная особенно при использовании условной компиляции,
FR>>ну и исключаем лишнюю сущность которая есть во многих языках namespace.

M>Так в том-то и дело, что исходник не вставляем и namespace остается. Потому что нам нужно все равно делать потом use module::что-то-там (вот и namespace). Если бы действительно вставляли (аналог ОКамловского open), то можно было бы пользоваться функциями из модуля безо всякого use.


open в OCaml это скорее аналог use. Там есть и include, который ближе к mod.

M>Условная компиляция к модулям, имхо, вообще не имеет отношения


Ну как раз с модулями ее и удобно использовать как замену для бедных параметризируемых
модулей.

FR>>Вообще модули перекочевали в rust прямиком из OCaml и сохранили оттуда некоторые

FR>>странности, и к сожалению растеряли по пути свою первоклассность.

M>Похоже, что авторы Rust'а не поняли, что такое модулив ОКамле, и перетянули часть синтаксических особенностей без единой полезности.


Ну да потеряли много.
Но в общем то логичность модулей раста ничем ни хуже и не лучше чем в большинстве других
языков. Мелкие кривости есть практически у всех.