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
返回()
,它会失败,因为您无法将*
应用于()