首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >把"mut“放在变量名之前和放在":”后面有什么区别?

把"mut“放在变量名之前和放在":”后面有什么区别?
EN

Stack Overflow用户
提问于 2015-02-18 15:46:54
回答 3查看 13.3K关注 0票数 96

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }
fn modify_foo(foo: &mut i32) { *foo += 1; *foo }

为什么mut会有不同的位置

看起来第一个函数也可以声明为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fn modify_foo(foo: mut Box<i32>) { /* ... */ }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-18 15:54:44

mut foo: T表示您有一个名为foo的变量,它是一个T。允许您更改变量引用的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let mut val1 = 2;
val1 = 3; // OK

let val2 = 2;
val2 = 3; // error: re-assignment of immutable variable

这还允许您修改自己拥有的结构的字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct Monster { health: u8 }

let mut orc = Monster { health: 93 };
orc.health -= 54;

let goblin = Monster { health: 28 };
goblin.health += 10; // error: cannot assign to immutable field

foo: &mut T表示您有一个引用(&)值的变量,并且允许您更改(mut) 引用的值(如果它是一个结构,则包括字段):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let val1 = &mut 2;
*val1 = 3; // OK

let val2 = &2;
*val2 = 3; // error: cannot assign to immutable borrowed content

请注意,&mut只有在引用的情况下才有意义- foo: mut T不是有效的语法。如果有意义,您还可以组合这两个限定符(let mut a: &mut T)。

票数 105
EN

Stack Overflow用户

发布于 2015-04-16 17:58:23

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 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采取“白名单”方法,如果你想让某些东西是可变的,你必须明确地说出来。

票数 122
EN

Stack Overflow用户

发布于 2021-05-24 14:59:59

下面的自然语言翻译似乎让我明白了……

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let x = value;
  x {binds immutably} to {immutable value}

let mut x = value;
  x {binds mutably} to {possibly mutable value}

let x = &value;
  x {binds immutably} to {a reference to} {immutable value}

let x = &mut value;
  x {binds immutably} to {a reference to} {mutable value}

let mut x = &value;
  x {binds mutably} to {a reference to} {immutable value}

let mut x = &mut value;
  x {binds mutably} to {a reference to} {mutable value}

哪里

  • {binds mutably}表示绑定可以为reassigned
  • {mutable value}表示值的内容可以更改
  • 您需要一个可变绑定来更改可变的值
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28587698

复制
相关文章
把焦点放在“人”上
企业架构是个有30多年历史的技术领域,一贯给人“高深莫测”、“口若悬河”、“青云直上”的感觉,诗意一点儿的话,很多人认为这是“两只黄鹂鸣翠柳、一行白鹭上青天”(翻译过来就是“不知所云、离题万里”)。但是,“中台”这两年的火热,在笔者看来,实属企业架构方法论的“重新发现”,仔细看看每一张“中台”架构图,哪一张不是在全面阐述“企业架构”?而很多尝试的企业在实践中台时遇到的一个问题是:照着描却这么也描不像。笔者对方法论一直是持开放态度,尊重每一种方法论,也认为对每一种方法论的辨析都应该基于对实践的充分了解,而非道听途说。但是毕竟能接触到的实践机会有限,在此也只能违背自己的原则,试着谈论几句。
用户6900693
2020/11/10
6400
把焦点放在“人”上
昇腾 AI:“把开发者放在心上,把产业发展放在心上” | Q推荐
作者 | 鲁冬雪 昇腾 AI 开发者创享日是面向开发者的全国巡回活动,旨在汇聚区域伙伴、科研院所及高校人才,通过最前沿的技术思考、最纯粹的技术分享、最真实的动手体验,为其提供一个深度探讨与交流的平台。过去一年里,昇腾 AI 开发者创享日先后在西安、成都、南京等城市成功举办。每次活动都会引发 AI 圈内及当地众多开发者的追捧,活动现场热闹非凡,众多媒体争相报道。 那么,这个活动的魅力究竟在哪?相同类型的活动很多,为什么单单“昇腾 AI 开发者创享日”的活动可以场场爆满?为什么能够吸引来那么多媒体进行报道?当
深度学习与Python
2023/03/29
3380
昇腾 AI:“把开发者放在心上,把产业发展放在心上” | Q推荐
EditText把光标放在文本的末尾处
当手动设置EditText的文本时,光标会恢复到最前面,可以再监听中设置光标到末尾处,这样就好了,大家有什么问题可以在下方留言。
程思扬
2022/01/11
5830
hashmap为什么在发生hash冲突后把元素放在链表的头部?
有回答说是因为最后放入的元素会被再次操作的机会很大,所以放在头部,提高再次获取的效率,这个解释不能让人信服。 其实,仔细想想如果不放在头部,放在尾部或其它位置,是不是需要遍历,找到指定位置,如果链表的长度很长,性能会很低,反而不如放在链表的头部高效。 我个人觉得也不尽然,存放一个尾部地址也是分分钟钟的事,实现起来也不复杂,我还是比较倾向于第一种考虑,开发作者就是有这样的认知或统计:插入的数据被马上访问的概率也就越大。有没有其他的解释?
日薪月亿
2019/05/14
9830
龟叔帮助微软把Python放在了Excel
微软宣布在 Excel 中加入 Python,也就是说我们可以在 Excel 中使用 Python 的强大功能。可以直接在单元格中键入 Python,Python 计算在 Microsoft 云中运行,结果将返回到工作表,包括绘图和可视化效果。
somenzz
2023/09/20
3160
龟叔帮助微软把Python放在了Excel
jsp被转成servlet后eclipse把这个servlet放在哪个目录下呢?
马 克-to-win:对于学有余力的同学,我最后再延伸讲一点。Eclipse运行jsp的时候,先把它变成一个servlet(发生在第一次访问jsp时)。 eclipse把这个servlet放在哪个目录下呢?我们可以按照下面的步骤找到它:右击项目/Run as/Run Configuration找到你的Tomcat Server/Argument其中找到deploy这个参数,它清清楚楚的标明,你的Servlet项目被部署到哪个目录下了!到那个目录附近,耐心打 开每个目录。仔细依照可以找到这个servlet,我的在D:\eclipseJee\.metadata\.plugins\ org.eclipse.wst.server.core\tmp0\work\Catalina
马克java社区
2021/07/09
4210
腾讯把数据中心放在了贵州哪里? | 拔刺
--- 拔出你心中最困惑的刺!--- 在这个用过即弃的时代,不要让你的求知欲过期。 今日拔刺: 1、 腾讯把数据中心放在了贵州哪里? 2、身为无人机发展强国的以色列,为什么要从中国采购万架大疆无人机?
镁客网
2018/06/28
2.3K0
git clone下来的代码放在哪里,如何放在指定路径
但是话说我的东西下载到哪里去了呢????摸不着头脑,然后百度之,发现一般会放在命令行对应的路径下,也就是
全栈程序员站长
2022/09/16
4K0
git clone下来的代码放在哪里,如何放在指定路径
Win10怎样把我的电脑放在桌面上?
1、点击[桌面] 2、点击[个性化] 3、点击[主题] 4、点击[桌面图标设置] 5、点击[计算机] 6、点击[确定]
裴来凡
2022/05/28
9300
Win10怎样把我的电脑放在桌面上?
解决把listview放在ScrollView只显示一行的问题
这种问题是需要重新去计算  listview的条数,不管你是一次性加载,很多可以分页加载  
wust小吴
2019/07/08
1K0
怎样把DataGrid存放在ViewState中的无用数据卡掉
作者:无间道的博客http://www.cnblogs.com/wangsaokui/article网络
Java架构师必看
2021/03/22
5160
起个服务把静态html文件放在手机上访问
装个node; 全局装个anywhere的npm包。(npm i -g anywhere) 大功告成,现在到任意目录下用命令行执行anywhere就可以; (anywhere -p 参数可以设置启动端口) 补充:启动后为一个ip+端口的地址,这个ip就是你的网络环境下的ip,你现在就可以用手机访问这个ip+端口,记得手机和电脑是同个网络环境才可以(同个内网)。
江一铭
2022/06/16
8480
天了噜,为什么外链css要放在头部,js要放在尾部?
我们最开始学前端的时候都会看到教程在处理外部css,js的时候会将css放在header中,js放在body的最后。为什么要这样子处理,今天参考一些资料好好分析下。
Daotin
2019/12/04
2.7K0
将网站程序放在tmpfs下
将网站程序放在tmpfs下 然后用nginx直接做对外服务呢 varnish或者squid都是利用内存和它的连接数来做到加速服务. 但是如果是squid->nginx->fastcgi->mysql 这样当中很多连接是开销在内部的连接之中 而且如果客户端请求php.squid还需要将请求再转发至nginx,然后nginx再转发至fastcgi 对于动态内容的多加了一个步骤. 考虑到nginx有了不低于squid以及varnish的连接能力 那么可以将网站程序直接放在tmpfs中 这样如果是静态的.就会直接从内存读取后返回给用户(和其他缓冲服务器的效果一样) 如果是PHP就丢给后面的fastcgi处理 这样更快.
Java架构师必看
2021/03/22
1.1K0
CVPR 2023:把人放在他们的位置,把人自然地插到图像里
题目:Putting People in Their Place: Affordance-Aware Human Insertion into Scenes
墨明棋妙27
2023/08/21
2920
CVPR 2023:把人放在他们的位置,把人自然地插到图像里
CVPR 2023:把人放在他们的位置,把人自然地插到图像里
题目:Putting People in Their Place: Affordance-Aware Human Insertion into Scenes
集智书童公众号
2023/09/04
3330
CVPR 2023:把人放在他们的位置,把人自然地插到图像里
SQL参数放在where前后的区别
本博客记录一个细节,在使用sql left join时候,参数放在left join后面当条件,还是放在where后的区别 给出两条SQL: tt.book_type = ‘TIPS_TYPE’,放在left join后面当条件
SmileNicky
2019/03/11
6430
Google 为什么把几十亿行代码放在一个库
《ACM通信》有一篇论文《为什么 Google 要把几十亿行代码放在一个库?》,作者是谷歌基础设施小组的工程师。作者详细讲述了Google的代码为什么全部放在一个库里面。
开发者技术前线
2020/11/24
1K0
Google 为什么把几十亿行代码放在一个库
API经济来临释放开发压力,把更多精力放在业务上
通过开放API来解放程序员,释放更多计算能力,这是API经济,APICloud则是API经济的推动者。从目前中国的行业发展态势来看,API的运用正席卷各行各业。 说起落地应用,两大关键性因素不可缺少,
BestSDK
2018/03/02
8130
API经济来临释放开发压力,把更多精力放在业务上
CVPR 2023:把人放在他们的位置,把人自然地插到图像里
题目:Putting People in Their Place: Affordance-Aware Human Insertion into Scenes
BBuf
2023/08/22
3490
CVPR 2023:把人放在他们的位置,把人自然地插到图像里

相似问题

HTML代码把图片放在屏幕的左边,文本放在右边,下面有页脚?

45

在变量名之前和“:”之后放置“mut”有什么区别?

255

把div放在之前的“浮动属性”下面

10

把指针放在数据结构后面有什么意义?

20

我是Python的初学者,只是想知道把变量放在函数之前和放在函数内部有什么区别?

124
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文