2014-10-01 150 views
1

我想通過引用傳遞一個字符串,並操縱該函數的字符串:按引用傳遞一個字符串,並操作字符串

fn manipulate(s: &mut String) {                                                   
    // do some string manipulation, like push 
    s.push('3'); // error: type `&mut collections::string::String` 
       // does not implement any method in scope named `push` 
} 

fn main() { 
    let mut s = "This is a testing string".to_string(); 
    manipulate(&s);   
    println!("{}", s);  
} 

我看過的例子就borrowingmutibility。也試過(*s).push('3'),但得到

error: type `collections::string::String` does not implement any method in scope named `push` 

我敢肯定有一些東西很明顯我失蹤或者更參考資料閱讀,但我不知道如何着手。謝謝!

+0

更改'push_char' - >'push'必須是相對較新的,因爲我不記得上次使用String功能的那部分時遇到了它。你使用什麼版本(如果每天晚上,從什麼日期開始)? – delnan 2014-10-01 22:05:18

+0

我使用的版本是'rustc 0.12.0-每晚(740905042 2014-09-29 23:52:21 +0000)' – EricC 2014-10-02 02:42:38

+0

糾正我以前的評論。我在一臺不同的機器上試過相同的代碼,這個機器上每晚都會出現0.12.0(740905042 2014-09-29 23:52:21 +0000)'。結果的錯誤實際上是更多的信息:'錯誤:不能借用'&'-pointer作爲mutable'的不可改變的引用。基本上就像@IdolfHatler所描述的那樣! – EricC 2014-10-02 02:49:16

回答

5

您的代碼可以在最新版本的rustc上稍作修改。

fn manipulate(s: &mut String) {                                                   
    s.push('3'); 
} 

fn main() { 
    let mut s = "This is a testing string".to_string(); 
    manipulate(&mut s);   
    println!("{}", s);  
}