Перегрузка функций появилась в ночных сборках — перегруженную функцию можно звать без лишних скобок

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