Работа с документацией


#1

Здравствуйте!
Для парсинга параметров запроса в url понадобилось разбить строку на пары ключ/значение. Как-то так

for param in req.uri().query().unwrap().split("&") {
    let parts = param.split("=").collect::<Vec<&str>>();
}

Так всё работает, но хотелось бы сделать более изящно

for param in req.uri().query().unwrap().split("&") {
    let (key, value) = param.splitn(2, "=").into::<(&str, &str)>();
}

Но это предыстория, частный случай.

А непонятно мне другое - в документации указано, что тип SplitN реализует характеристику Into, но нигде не указывается для каких типов он её реализует! Более того, и самой реализации в стандартной библиотеке я не нашел. Так же и со многими другими типами.
Где-то эта информация вообще есть?

Спасибо.


#2

Я бы попробовал имплементировать трейт From для Split, который бы возвращал тупл из двух элементов.


#3

Не хочется настолько заморачиваться. Это, всё-таки, я больше для тренировки делаю. Тут больше вопрос, где найти эти моменты в документации.


#4

Трейт Into вообще обычно не реализуют напрямую, а вместо него реализуют From. Существует автоматическая реализация Into, которая использует From, определённый на том типе, в который нужно преобразовать.

И да, если бы задача была распарсить параметры из строки (а там не только & и =, но и URL encoding), то правильным решением было бы не писать это самому, а взять библиотеку, которая это уже умеет хорошо делать.