Перегрузка функций появилась в ночных сборках — перегруженную функцию можно звать без лишних скобок
19.08.2026В ночных сборках включён эксперимент по перегрузке вызовов функций. Он снимает необходимость заворачивать аргументы перегруженной функции в кортеж.
Какая была форма записи
Перегрузка в Rust существует давно, но выглядит непривычно: функция принимает кортеж аргументов, поэтому вызов записывается с двойными скобками — hypot((2.0, 3.0, 6.0)). Работает вывод типов как обычно, но вид непривычный, и каждый раз приходится объяснять его в коде.
Особенно это мешает в привязках к чужому интерфейсу. Там перегрузка задана самой библиотекой — так она выглядит на C — и обвязка обязана приводить вид к принятому в Rust.
Что даёт эксперимент
Аргументы можно передавать раздельно, как в любом языке с перегрузкой на уровне языка. Проверка и вывод типов при этом работают ровно как в устоявшейся перегрузке, то есть механизм не упрощается — меняется только запись вызова.
Включается атрибутом с префиксом компилятора, что прямо говорит: имя поменяется при стабилизации. Доступно на ночных сборках начиная с 31 июля 2026 года.
Зачем это нужно именно сейчас
Работа идёт вместе с инициативой по взаимодействию Rust и C++. Перегрузка там — не экзотика: в C++ её полно, и генераторы привязок вынуждены с этим справляться.
В перспективе обсуждается форма, вообще не требующая ни кортежей, ни трейтов, — объявление перегрузки прямо на функции. Но до этого ещё далеко, и сейчас обсуждается именно форма вызова.
Оригинал
Rust nightly builds from 2026-07-31 onwards have experimental support for more ergonomic function and method overloading, using the incomplete "splat" compiler feature; if you're a compiler or interop tool developer, we encourage you to experiment with it!
This experiment lets overloaded functions be called with separate arguments, like this: hypot(2.0, 3.0, 6.0). No double parentheses required! But type inference and type checking still happen as they would in a stable Rust overload.
Like most Rust language experiments, this nightly feature has no RFC, and can change or be removed at any time.
Упоминаний: 1 · Просмотров: 2