Size: a a a

У нас тут секта криптоанархистов

2021 March 04

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
предположим есть у меня функция которая консьюмит стрингу и добавляет значение в хэшмап
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
как это сделать если раст нахуя-то делает проверку лайфтаймов и ломается
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
use std::collections::HashMap;

fn add_value(s: String, i: i32, h: &mut HashMap<&str, i32>) {
   h.insert(s.as_str(), i);
}

fn main() {
   let x = HashMap::new();
   add_value("a".into(), 12, &mut x);
}
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
error[E0597]: s does not live long enough
--> hashmap.rs:4:14
 |
3 | fn add_value(s: String, i: i32, h: &mut HashMap<&str, i32>) {
 |                                                 - let's call the lifetime of this reference '1
4 |     h.insert(s.as_str(), i);
 |     ---------^-------------
 |     |        |
 |     |        borrowed value does not live long enough
 |     argument requires that s is borrowed for '1
5 | }
 | - s dropped here while still borrowed

error: aborting due to previous error

For more information about this error, try rustc --explain E0597.
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
@ilyavenner илюш если не трудно тыкни как делать надо правильно
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
окей можно чтобы сам хэшмап законсьюмил
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
но я не уверен что так надо
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
так окей просто сделать HashMap<String, i32>?
источник

S[

Seer Iλya [Vennik E1... in У нас тут секта криптоанархистов
ʰᵉˡˡᵒᵈᵒᵍᵉ
error[E0597]: s does not live long enough
--> hashmap.rs:4:14
 |
3 | fn add_value(s: String, i: i32, h: &mut HashMap<&str, i32>) {
 |                                                 - let's call the lifetime of this reference '1
4 |     h.insert(s.as_str(), i);
 |     ---------^-------------
 |     |        |
 |     |        borrowed value does not live long enough
 |     argument requires that s is borrowed for '1
5 | }
 | - s dropped here while still borrowed

error: aborting due to previous error

For more information about this error, try rustc --explain E0597.
s.as_str() живёт до конца add_value, а ты его мытаешься положил в хешмапу с владеющим лайфтаймом
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
Seer Iλya [Vennik E10]
s.as_str() живёт до конца add_value, а ты его мытаешься положил в хешмапу с владеющим лайфтаймом
это я понимаю
источник

S[

Seer Iλya [Vennik E1... in У нас тут секта криптоанархистов
h.insert(s, i);
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
окей, ну тада хеш мап все же по String?
источник

S[

Seer Iλya [Vennik E1... in У нас тут секта криптоанархистов
я чуть позже отвечу
источник

S[

Seer Iλya [Vennik E1... in У нас тут секта криптоанархистов
с примером
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
хорошо
ну вроде как пока что сделаю так, пример пришлю
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
use std::collections::HashMap;

fn add_value(s: String, i: i32, h: &mut HashMap<String, i32>) {
   h.insert(s, i);
}

fn main() {
   let mut x = HashMap::new();
   add_value("a".into(), 12, &mut x);
}
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
если будет время, лучше поясни правильно ли тут боксы использовать, или лучше все же по другому
pub (crate) enum Expr {
   Const (i32),
   Var (String),
   Add (Box<Expr>, Box<Expr>),
   Mul (Box<Expr>, Box<Expr>)
}
источник

g

genius in У нас тут секта криптоанархистов
источник

MT

Munir Tagarifullin in У нас тут секта криптоанархистов
Из зис э риал лайф
источник

ʰ

ʰᵉˡˡᵒᵈᵒᵍᵉ... in У нас тут секта криптоанархистов
AAAAAAAAAAAAAAAAAAAAAAa
источник