TGViewer
Random Rust Dev Random Rust Dev @random_rust_dev · 472 subscribers
Post #225 556
Запоздалый Rust Tip.

Используйте impl AsRef<T>, impl AsMut<T> и impl Into<T> в аргументах, когда ожидается, что вызываться функция будет удобнее с автоматической конверсией без потери выразительности API.

Но только если T это не дженерик. Иначе придется его явно указывать.

Классический пример это AsRef<Path> аргументы в std всюду, где нужен &Path, потому что удобно вызывать со строковым литералом. При этом на вызывающей стороны не возникает вопросов, куда там оно сконвертируется.

Еще хороший пример - impl Into<EnumType>, где для вариантов есть отдельный тип, который конвертируется в этот вариант. Концептуально они должны быть одним и тем же.

Использовать ли impl Trait или объявить generic, дело вкуса по большей части. Единственная разница в невозможности явно указать тип. Если вы ожидаете, что пользователю функции когда-то понадобится явно указать тип - объявляйте, иначе можно и с анонимным.
  • 👍 6
  • 👏 1
  • 💯 1
More from @random_rust_dev
  1. Sep 20, 2026И всё же ИИ отличная штука. Никакой поисковик не мог мне дать ответ на вопрос, почему шурш…
  2. Sep 20, 2026Скелетор злодей, но не врун
  3. Sep 18, 2026Я попросил GPT Astra повысить производительность Alkahest. GPT смог прогнать профайлер и у…
  4. Sep 16, 2026PC gaming with extra steps
  5. Sep 14, 2026Сегодня снова загадка. Вот в этом коде будет ли соптимизирован bound check в последнем выр…
  6. Sep 13, 2026Чуть не забыл. Поздравлчю всех с днём промпт-инженера!
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →