所有权与借用
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 暂停,性能可预测