gpt4 book ai didi

variables - 将 "mut"放在变量名之前和 ":"之后有什么区别?

转载 作者:行者123 更新时间:2023-11-29 07:40:10 25 4
gpt4 key购买 nike

这是我在 Rust 文档中看到的两个函数签名:

fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }
fn modify_foo(foo: &mut i32) { *foo += 1; *foo }

为什么 mut 的位置不同?

似乎第一个函数也可以声明为

fn modify_foo(foo: mut Box<i32>) { /* ... */ }

最佳答案

如果您来自 C/C++,基本上这样想可能也会有所帮助:

// Rust          C/C++
a: &T == const T* const a; // can't mutate either
mut a: &T == const T* a; // can't mutate what is pointed to
a: &mut T == T* const a; // can't mutate pointer
mut a: &mut T == T* a; // can mutate both

您会注意到它们是彼此相反的。 C/C++ 采用“黑名单”方法,如果你想要某些东西不可变,你必须明确说明,而 Rust 采用“白名单”方法,如果你想要某些东西可变,你必须明确说明。

关于variables - 将 "mut"放在变量名之前和 ":"之后有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28587698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com