Контрольный список рекомендаций по Rust API

  • Именование (ящик соответствует соглашениям об именах Rust)
    • Корпус соответствует RFC СЛУЧАЙ )
    • Специальные преобразования следуют относительно_, в _ условные обозначения ( C-CONV )
    • Имена получателей соответствуют соглашению Rust ( C-GETTER )
    • Методы в коллекциях, которые создают итераторы, следуют iter , iter_mut , into_iter ( C -ITER )
    • Имена типов итераторов соответствуют методам, которые их создают ( C-ITER-TY )
    • Featu Имена re не содержат слов-заполнителей ( C-FEATURE )
    • В именах используется постоянный порядок слов ( ЗАКАЗ C-СЛОВ )
  • Совместимость (ящик прекрасно взаимодействует с другими функциями библиотеки)
    • Типы охотно реализуют общие черты ( C-COMMON-TRAITS )
      • Копия , Клон , Eq , PartialEq , Порядок , PartialOrd , Хеш , Отладка , Дисплей , По умолчанию
    • При преобразовании используется стандартный черты От , AsRef , AsMut ( C-CONV-TRAITS )
    • Реализация коллекций FromIterator и Расширить ( C-COLLECT )
    • Структуры данных реализуют Serde’s Serialize , Десериализация ( C-SERDE )
    • Типы: Отправить и Синхронизация где возможно ( C-SEND-SYNC )
    • Типы ошибок значимы и корректны ( C-GOOD-ERR )
    • Типы двоичных чисел обеспечивают Шестнадцатеричный , Восьмеричный , Двоичное форматирование ( C-NUM-FMT )
    • Общие функции чтения / записи принимают R: чтение и W: Запись значение ( C-RW-VALUE )
  • Макросы (ящик представляет корректные макросы)
    • Синтаксис ввода напоминает вывод ( C-EVOCATIVE )
    • Макросы хорошо сочетаются с атрибутами ( C-MACRO-ATTR )
    • Макросы пунктов работают везде, где разрешены предметы ( C-ВЕЗДЕ )
    • Макросы элементов поддерживают спецификаторы видимости ( C-MACRO-VIS )
    • Типовые фрагменты гибкие ( C-MACRO-TY )
  • Документация (ящик обильно задокументирован)
    • Ящик документация уровня подробна и включает примеры ( C-CRATE- DOC )
    • Все элементы имеют пример rustdoc ( ПРИМЕР C )
    • Примеры использования ? , а не пытаться! , не развернуть ( ЗНАЧКА ВОПРОСА )
    • Документация по функциям включает сведения об ошибках, панике и безопасности ( C-FAILURE )
    • Проза содержит гиперссылки на соответствующие вещи ( C-LINK )
    • Cargo.toml включает в себя все стандартные метаданные ( C-METADATA )
      • авторы, описание, лицензия, домашняя страница, документация, репозиторий, readme, ключевые слова, категории
    • Примечания к выпуску документируют все существенные изменения ( С-RELNOTES )
    • Rustdoc не показывает бесполезные детали реализации ( C-HIDDEN )
  • Предсказуемость (ящик включает разборчивый код, который действует так, как он выглядит)
    • Умные указатели не добавляют собственных методов ( C-SMART-PTR )
    • Конверсии относятся к наиболее конкретному задействованному типу ( C-CONV-SPECIFIC )
    • Функции с чистым приемником являются методами ( C-МЕТОД )
    • Функции не принимают параметры ( C-NO-OUT )
    • Перегрузки оператора неудивительны ( C-ПЕРЕГРУЗКА )
    • Реализация только интеллектуальных указателей Deref и DerefMut ( C- DEREF )
    • Конструкторы – это статические внутренние методы ( C- CTOR )
  • Гибкость (ящик поддерживает различные варианты использования в реальном мире)
    • Функции предоставляют промежуточные результаты, чтобы избежать дублирования работы ( C-ПРОМЕЖУТОЧНЫЙ )
    • Вызывающий абонент решает, куда копировать и размещать данные ( C-CALLER-CONTROL )
    • Функции сводят к минимуму предположения о параметрах, используя универсальные шаблоны ( C-GENERIC )
    • Черты объектно-безопасны, если они могут быть полезны в качестве объекта признака ( C -ОБЪЕКТ)
  • Типовая безопасность (ящик эффективно использует систему типов)
    • Новые типы обеспечивают статические различия ( C-NEWTYPE )
    • Аргументы передать средства ng через типы, а не bool или Вариант ( C-ПОЛЬЗОВАТЕЛЬСКИЙ ТИП )
    • Типами для набора флагов являются битовые флаги. , а не перечисления ( C-BITFLAG )
    • Построители позволяют создавать сложные значения ( C-BUILDER )
  • Надежность ( crate вряд ли поступит неправильно)