這是我的第一個Rust代碼。僅僅因爲編譯器告訴我,我將生命週期參數添加到內部函數中。雖然我理解Rust書中的終身解釋,但我不能自己寫這個簽名。爲什麼我需要這些壽命,但不需要其他人,如何知道正確的簽名以及如何識別需要壽命的參數?
fn transform_the_expression() {
fn create_formula<'t>(formula: & mut HashMap<& str, &'t str>, input: &'t str, re: Regex)->std::borrow::Cow<'t, str>{
let replacement = re.find(input).unwrap();
formula.insert("1", replacement.as_str());
let rest = re.replace(input, "1");
return rest;
}
let input = "(a+(b*c))";
use regex::Regex;
let re = Regex::new(r"\([\w\d][/*+-^][\w\d]\)").unwrap();
use std::collections::HashMap;
let mut formula = HashMap::new();
let result = create_formula(&mut formula, input, re);
println!("result = {:?}", result);
}
- 爲什麼我需要在簽名這3位生存期?
- 爲什麼我不需要他們在其他地方?
- 我該如何去編寫沒有編譯器告訴我該怎麼做的正確簽名?
- 如何識別需要壽命的參數?
這種類型的問題並不適合堆棧溢出。對[Rust subreddit](https://www.reddit.com/r/rust),[用戶論壇](https://users.rust-lang.org/)或[IRC] (https://www.rust-lang.org/en-US/community.html) – Shepmaster