Доброго времени суток, ЛОР!
В попытках разобраться с Rust'ом не понял две вещи:
- Трейта для коллекций (чтобы были определены всякие push, pop и т.д.) не существует? Или я плохо ищу? Или есть в планах? Или это не нужно, потому что коллекции слишком разные, например?
- Попробовал наговнокодить, чтобы компилятор мне что-нибудь подсказал насчёт первого вопроса, но как-то не вышло:
fn shift<T, U>(v: &mut U<T>) { let i = v.pop().unwrap(); v.insert(0, i); }
Потом чуть подумал и понял, что надо, наверное, просто T, но что делать, если мне нужно будет уточнить, например, что должен уметь именно U? Или я что-то совершенно неправильно понимаю?src/main.rs:1:26: 1:27 error: type parameters are not allowed on this type [E0109] src/main.rs:1 fn shift<T, U>(v: &mut T<U>) { ^
P.S. Уж не обессудьте, мозг повреждён питоном и ударом об пол в детстве.
UPD: Первый вопрос (если предположить, что нужного трейта нет), наверное, решается макросом. Но мне отчего-то кажется, что это оверкилл.