Rust (язык программирования): различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Содержимое удалено Содержимое добавлено
Tetromino (обсуждение | вклад) м →Объектная система: орфография |
Tetromino (обсуждение | вклад) →Объектная система: уточнение |
||
Строка 250:
В Rust объектная система основана на [[Типаж (абстрактный тип)|типажах]] ({{lang-en2|traits}}) и [[Структура (язык Си)|структурах]] ({{lang-en2|structs}}). Типажи определяют [[сигнатура функции|сигнатуры]] методов, которые должны быть реализованы для каждого типа (чаще всего — структуры), реализующего типаж. Типаж может содержать и реализации методов, принимаемые по умолчанию. Реализация типажей для данной структуры, а также реализация собственных методов структуры обозначается ключевым словом ''<code>impl</code>''. Язык содержит несколько десятков встроенных типажей, большая часть которых используется для [[Перегрузка операторов|перегрузки операторов]], а некоторые имеют специальное значение.
Язык поддерживает [[Обобщённый алгебраический тип данных|обобщённые типы]] ({{lang-en2|generics}}). Помимо функций, обобщёнными в Rust могут быть комплексные типы данных, структуры и [[Тип-сумма|перечисления]]. [[Компилятор]] Rust компилирует обобщённые функции весьма эффективно, применяя к ним мономорфизацию (генерация отдельной копии каждой обобщённой функции непосредственно в каждой точке её вызова). Таким образом, копия может быть адаптирована под конкретные типы аргументов, а следовательно, и оптимизирована для этих типов. В этом отношении обобщённые функции Rust сравнимы по производительности с [[Шаблоны C++|шаблонами языка C++]].
|