XU XUv0.8.8
EN

文档 / 教程

06 · 所有权与借用

无 GC。按值传 string 即 move。&x 共享借用;mut &x 独占借用(x 须 mut)。

源码

@main

fn take(s string) {
    println(s)
}

fn len_of(s &string) int {
    << s.len
}

fn append_bang(s &mut string) {
    s.push_str("!")
}

fn main() int {
    msg := "hello"
    println(len_of(&msg))
    println(msg)

    mut owned := "hi"
    append_bang(mut &owned)
    println(owned)

    take(owned)
    // owned 已 move,不可再使用
    << 0
}

编译(examples 仓库根,使用已安装的 xu):

xu run examples/06_ownership_borrow/main.xu
# 或:xu build examples/06_ownership_borrow/main.xu
# mac/linux 默认写出 ./main ;Windows 为 ./main.exe

在独立的 examples 仓库根执行;源码位于 examples/。