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);
}