собой отличаются трейт, крейт и модуль? Модуль это то, что находится внутри mod? крейт, как писалось в растбуке - это минимальный код, рассматриваемый компилятором, но я не понял для программиста что это? один файл? а про трейт ваще ниче не понял))
трейт это вообще про другое
крейт - это, как правило - весь твой проект модуль - это то что объявляется ключевым словом mod name_of_module. При этом содержимое модуля может быть как сразу тут внутри блока mod, так и в отдельном файле name_of_module.rs, так и в отдельной папке name_of_module с файлом mod.rs. Варианты с содержимым модуля в отдельных файлах не избавляют тебя от необходимости писать mod name_of_module. В итоге все модули собираются в корне крейта - в main.rs или в lib.rs а трейт - это вообще про другое
С помощью модуля ты сможешь закрыть элементы (функции, структуры, энамы, вложенные модули и т. д.) и сделать их недоступными внешнему коду. С помощью модулей можно удобно разбить проект на файлы, и чтобы модули видели друг друга применяют ключевое слово mod. Объявление mod name_of_module; вводит в область видимости текущего кода сам этот модуль и его элементы. По умолчанию модуль и его элементы закрыты, но ты можешь их открыть с помощью ключевого слова pub и тогда код, где был объявлен модуль, сможет обращаться к элементам модуля. Короче, модули нужны для закрытия доступа и для удобного разбиения проекта на файлы и папки. Попробуй поэксперементировать, компилятор поможет - будет бить по рукам и говорить "низзя".
Обсуждают сегодня