跳到主要内容

所有权与借用

RGC 采用所有权模型管理内存:每个值有唯一的拥有者,离开作用域即被释放;通过借用(@ / @var)安全地共享访问。全程无 GC、无运行时开销。

所有权​

值在移动(move)之后,原变量不可再使用:

def main() {
a = "hello"
b = a # 所有权从 a 移动到 b
print(b) # ok
# print(a) # 错误:a 已被 move
}

只读借用 @​

需要读取而不转移所有权时,使用 @ 借用:

def length(s: @str) -> int {
return s.len()
}

def main() {
text = "RGC"
print(length(@text)) # 只读借用
print(text) # text 仍然可用
}

可变借用 @var​

需要修改值时使用 @var 可变借用:

def push_zero(lst: @var List[int]) {
lst.push(0)
}

方法调用​

容器方法按借用语义自动处理:

def main() {
list = [1, 2, 3]
list.push(4) # 可变借用
n = list.len() # 只读借用
}

内存安全保证​

所有权 + 借用检查在编译期完成:

  • 无 use-after-move
  • 无悬垂引用
  • 无数据竞争(可变借用与只读借用互斥)
  • 无 GC 暂停,性能可预测

继续阅读​