這裏是Rust的第一步。我搜索了一個答案,但無法找到與最新版本一起工作的任何內容。如何使用可變成員Vec?
struct PG
{
names: &mut Vec<String> // line 12
}
impl PG
{
fn new() -> PG
{
PG { names: Vec::new() } // line 19
}
fn push(&self, s: String)
{
self.names.push(s);
}
}
fn main()
{
let pg = PG::new();
pg.push("John".to_string());
}
如果我編譯上面的代碼,我得到:
src/main.rs:12:12: 12:28 error: missing lifetime specifier [E0106]
src/main.rs:12 names: &mut Vec<String>
^~~~~~~~~~~~~~~~
如果我改變的names
類型&'static mut Vec<String>
,我得到:
src/main.rs:19:21: 19:31 error: mismatched types:
expected `&'static mut collections::vec::Vec<collections::string::String>`,
found `collections::vec::Vec<_>`
(expected &-ptr,
found struct `collections::vec::Vec`) [E0308]
我知道我可以使用參數化生活時間,但由於其他原因,我不得不使用static
。如何正確創建會員Vec?我在這裏錯過了什麼?非常感謝你。
也許這會幫助你http://stackoverflow.com/questions/36413364/as-i-can-make-the-vector-is-mutable-inside-struct#36720608 – 2016-04-19 15:05:15