首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >Mojo >Mojo 的所有权与借用检查机制有哪些规则?

Mojo 的所有权与借用检查机制有哪些规则?

词条归属:Mojo

1. 三条基本规则

  • 每个值在同一时刻只有一个所有者
  • 所有者的生命周期结束时,Mojo 销毁该值
  • 若仍存在指向某值的引用,Mojo 会延长所有者的生命周期

2. 变量与结构体的归属关系

变量拥有其值,结构体拥有其字段。引用则允许访问由其他变量拥有的值,引用分为可变访问与不可变访问两类。引用在函数调用时被创建,函数也可以返回引用,此时可通过 ref 关键字创建引用绑定来捕获它。

3. 六类参数约定

约定

是否获得所有权

是否可变

典型用途

默认(不可变借用)

否

否

只读访问,为默认行为

mut

否

是

原地修改调用方的值

var

是

是

需要一份本地可变副本或独占所有权

ref

否(引用)

跟随被引用值

返回或持有带有 origin 的引用

out

是(成为该值)

是

用于构造函数与具名结果

deinit

是(消耗该值)

是

用于析构函数与消耗式移动

未显式声明约定的参数,默认采用不可变只读借用;1.0 版本起该默认约定的关键字名为 imm,此前名为 read。Mojo 通过这种设计实现默认的值语义,同时作为系统语言仍保留对引用语义的完整控制。

4. 三种值类型 trait

  • ImplicitlyCopyable:可不显式声明地被复制,通常是 Int、Float64、Bool 这类简单值类型
  • Copyable:可通过 copy() 方法或拷贝初始化器显式复制,复制原值不受影响
  • Movable:可通过转移操作符 ^ 转移所有权,转移后源变量处于未初始化状态

5. 转移操作符与引用绑定

^ 是唯一真正改变值归属的操作,复制不会改变所有权。引用绑定使用 ref 关键字创建,对引用绑定的读写会直接作用于被引用的对象,且引用绑定本身不能被重新赋值。

相关文章
所有权与零成本抽象的关系以及不可变借用的规则与限制
Rust是一门系统级编程语言,以其内存安全、高性能和并发性等特点受到广泛关注。所有权系统是Rust的核心特性之一,它为内存管理提供了一种安全且高效的方式。零成本抽象则是Rust的另一个重要理念,旨在让高级抽象在不带来运行时性能开销的情况下得以实现。不可变借用作为所有权系统中的一部分,在数据访问和共享方面起着关键作用。深入理解这些概念对于编写高质量的Rust代码至关重要。
用户11945645
2025-12-22
4150
AI 届新语言 Mojo 要🔥?
这个标题里放一个 emoji 有点哗众取宠的意思,但真不是我想放,而是 Mojo 这语言自己的官网就长这样 1。而且,这语言的标准文件后缀一个是「.mojo」另一个就是「.🔥」。说实话,这个操作其实挺无聊的,也有点败好感,但如果说这个语言能在完全兼容 Python 的基础上大幅提高执行效率,并且作者是 LLVM 发起人 Chris Lattner 2,是不是突然又有兴趣继续了解它了呢?Mojo 被设计为 Python 语言的超集,并增加了许多特性,包括:
zhiruili
2023-10-20
7410
放弃Python拥抱Mojo?鹅厂工程师真实使用感受
前段时间 Modular 发布了一个新语言 Mojo,这语言不止官网放了巨大的 emoji 🔥,而且它的标准文件后缀一个是「.mojo」另一个是「.🔥」,一副立马要火的样子呢。
腾讯云开发者
2023-08-11
2.6K0
仓颉语言中的所有权与内存管理
仓颉语言作为一门新兴的编程语言,旨在为开发者提供简洁、高效且安全的编程体验。在当今的软件开发领域,内存管理一直是至关重要的问题。合理的内存管理可以提高程序的性能,避免内存泄漏、悬空指针等常见的内存错误。仓颉语言通过其独特的所有权与内存管理机制,在保证代码安全性的同时,也为开发者提供了灵活的编程方式。
用户11945645
2025-12-23
3940
Rust语言内存安全机制的原理与所有权使用技巧
在编程语言设计领域,Rust以其独特的内存安全机制成为焦点,广泛应用于系统编程与高性能应用。昨日,在第36届世界空间科学大会上,中国国家航天局局长孙来燕介绍未来五年航天计划时,提及高可靠性软件在航天任务中的重要性,而Rust的内存安全特性正契合这一需求。本文将深入剖析Rust所有权机制的原理,阐述其在内存安全中的作用,并分享实用编程技巧,为开发者提供参考。
是山河呀
2025-07-17
5400
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券