Pointers Rust:修改过程中的字符串

Pointers Rust:修改过程中的字符串,pointers,rust,Pointers,Rust,我正在努力熟悉锈迹,目前我正在处理锈迹指针。我尝试实现一个函数,该函数修改在过程范围外定义的字符串(只是为了看看我是否能做到),但什么最适合整数: fn increment(x: &mut int) { *x += 1; } fn main() { let mut y = 5i; increment(&mut y); } 字符串以某种方式失败: fn modify_string(x: &mut String) { *x.push_str(" I was

我正在努力熟悉锈迹,目前我正在处理锈迹指针。我尝试实现一个函数,该函数修改在过程范围外定义的字符串(只是为了看看我是否能做到),但什么最适合整数:

fn increment(x: &mut int)
{
  *x += 1;
}

fn main()
{
  let mut y = 5i;
  increment(&mut y);
}
字符串以某种方式失败:

fn modify_string(x: &mut String)
{
  *x.push_str(" I was modified somewhere else.");
}

fn main()
{
  let mut mod_str = "I was created in main(), and then".to_string();
  modify_string(&mut mod_str);
}
以下是:

Compiling hello_world v0.0.1 (file:///mnt/hgfs/projects/rust)
./src/main.rs:26:3: 26:49 error: type `()` cannot be dereferenced
./src/main.rs:26   *x.push_str(" I was modified somewhere else.");
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: aborting due to previous error
我想有一些关于生锈的字符串类型,我不明白。“单位类型”在哪里

()


来自哪里?最终,我做错了什么

调用前无需将
*
应用于
x
,因为
push\u str
的第一个参数是
&mut String


因此,
*x.push\u str(“”)
实际上被解析为
*(x.push_str(“”)
,并且由于
push_str
返回
()
,因此它失败,因为您无法将
*
应用于

调用之前,无需将
*
应用于
x
,因为
push_str
的第一个参数是
&mut String


因此,
*x.push\u str(“”)
实际上被解析为
*(x.push_str(“”)
,并且由于
push_str
返回
()
,因此它失败,因为您无法将
*
应用于

调用之前,无需将
*
应用于
x
,因为
push_str
的第一个参数是
&mut String


因此,
*x.push\u str(“”)
实际上被解析为
*(x.push_str(“”)
,并且由于
push_str
返回
()
,因此它失败,因为您无法将
*
应用于

调用之前,无需将
*
应用于
x
,因为
push_str
的第一个参数是
&mut String

因此,
*x.push\u str(“”)
实际上被解析为
*(x.push_str(“”)
,并且由于
push_str
返回
()
,它会失败,因为您无法将
*
应用于
()