src\server.rs:200:51
|
200 | for (path, group) in &routes.group_by(|x| &x.path) {
| -- ^^^^^^^ returning this value requires that `'1` must outlive `'2`
| ||
| |return type of closure is &'2 std::string::String
| has type `&'1 AtlasRoute`
Вуяд? Што не так? Хочу вот такую структурку групбай сделать:
struct AtlasRoute {
path: String,
value: i32
}
Я конеш могу склонировать но как-то некомильфо
Врядли, конечно, но &(*x).path не помогает?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6db4ad61698614f373d52bc8e1f7e7df
group_by требует возвращать owned тип, посмотри на сигнатуру
ну а что если мне надо группировать по не-овнед?
А. Владеющий итератор. Просто iter() нельзя?
.to_owned() ¯\_(ツ)_/¯
что за чушь, я не могу погруппировать без аллокаций?
на не владеющем итераторе должно работать
нет, мне группа по значению нужна
А ты циклом сможешь написать код группировки без аллокаций?
Though Tough luck. Владеющий итератор, значения перемещаются. А для группировки нужно хранить ключ. Который в данном случае ссылка и инвалидируется
Вплане? ключ же будет референсом, а структура будет внутри сгруппированных значений (вроде как `GroupBy<&String, Iter<AtlasRoute>`)
Iter<..> возвращает &AtlasRoute, а мне нужно передать его в функцию которой нужен AtlasRoute
а, ну тогда через into_iter() с аллокациями ключа, или группировать иначе
1. пока накапливаешь группу ссылаешься на любое из значений (например, на первое) 2. когда группа закончилась отпустил ссылку и отдал владеющую группу С дизайном (key, group) такое нельзя сделать, но необязательно key возвращать, юзер может сам из группы ключ посчитать
1. ссылки где хранить, в аллоцируемой коллекции?
Обсуждают сегодня