Rust 如何将框值传递给函数
如果我有以下方法:Rust 如何将框值传递给函数,rust,Rust,如果我有以下方法: fn borrow_func(c: Box<i32>) { // some code } fn main(){ let a = Box::new(5i32); let b = a; borrow_func(b); println!("b contains: {}", b); } 编译器似乎不支持b的指针类型 我如何才能做到这一点?您的借入函数实际上拥有已装箱变量的所有权。您应该更改borrow\u func的签名以反映
fn borrow_func(c: Box<i32>) {
// some code
}
fn main(){
let a = Box::new(5i32);
let b = a;
borrow_func(b);
println!("b contains: {}", b);
}
编译器似乎不支持b的指针类型
我如何才能做到这一点?您的
借入函数实际上拥有已装箱变量的所有权。您应该更改borrow\u func
的签名以反映借用情况,如下所示:
fn borrow_func(c: &i32) {
// some code
}
fn borrow_func2(c: &Box<i32>) {
// some code
}
fn main(){
let a = Box::new(5i32);
let b = a;
borrow_func(&b);
borrow_func2(&b);
println!("b contains: {}", b);
}
fn借用功能(c:&i32){
//一些代码
}
fn借用功能2(c:&框){
//一些代码
}
fn main(){
设a=Box::new(5i32);
设b=a;
借用职能(&b);
借用功能2和b;
println!(“b包含:{}”,b);
}
您也可以使用一个简单的&Box引用。有关借用的更多信息,请检查:
添加了一个有用的信息:
指向像&Box这样的框的指针是单向的,完全没有意义——它们引入了不必要的双重间接,并且没有任何有用的回报。简单的引用(&i32)始终是一种方法
你发布的代码编译得很好。您是想发布一些稍有不同的代码还是缺少一些内容?@PeterHall我添加了一个代码来使用变量b来演示其用法,因为内存是回收的,所以在调用函数borrow_func()后使用变量b是无效的,这将导致编译失败。我要补充的是,指向像&Box
这样的框的指针是单向的,完全没有意义——它们引入了不必要的双重间接寻址,并且没有任何有用的回报。只要简单的参考(&i32
)就可以了。谢谢,我已经包括了你的评论。非常感谢!是的,实际上,我们可能不使用like&Box,我只是想了解一下生锈。
fn borrow_func(c: &i32) {
// some code
}
fn borrow_func2(c: &Box<i32>) {
// some code
}
fn main(){
let a = Box::new(5i32);
let b = a;
borrow_func(&b);
borrow_func2(&b);
println!("b contains: {}", b);
}