首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    放弃Python拥抱Mojo?鹅厂工程师真实使用感受

    另一个重要的内存安全概念是对象的所有权,当一个函数获取了对象的所有权后,调用方就不应该再去使用这个对象了,例如我们实现了一个只支持移动的类型 UniquePtr: struct UniquePtr:...existing.ptr fn __del__(owned self): self.ptr = 0 同时,我们有两个函数,其中,use_ptr 使用了前面提到的 borrow 关键字,借用了 UniquePtr...那么,在调用 take_ptr 的时候,我们就需要在参数后面加上 ^ 后缀,用来表明我们将所有权转移给 take_ptr: fn use_ptr(borrowed p: UniquePtr):...print(p.ptr) fn take_ptr(owned p: UniquePtr): print(p.ptr) fn test_ownership(): let p = UniquePtr...test_ownership() 因此,如果我们将 use_ptr 和 take_ptr 的调用顺序调换一下,就会出现编译错误: fn test_ownership(): let p = UniquePtr

    2.2K40

    AI 届新语言 Mojo 要🔥?

    另一个重要的内存安全概念是对象的所有权,当一个函数获取了对象的所有权后,调用方就不应该再去使用这个对象了,例如我们实现了一个只支持移动的类型 UniquePtr: struct UniquePtr:...existing.ptr fn __del__(owned self): self.ptr = 0 同时,我们有两个函数,其中,use_ptr 使用了前面提到的 borrow 关键字,借用了 UniquePtr...那么,在调用 take_ptr 的时候,我们就需要在参数后面加上 ^ 后缀,用来表明我们将所有权转移给 take_ptr: fn use_ptr(borrowed p: UniquePtr):...print(p.ptr) fn take_ptr(owned p: UniquePtr): print(p.ptr) fn test_ownership(): let p = UniquePtr...test_ownership() 因此,如果我们将 use_ptr 和 take_ptr 的调用顺序调换一下,就会出现编译错误: fn test_ownership(): let p = UniquePtr

    51440
    领券