Substrate 学习记录(三):Rust 所有权、结构体 + ink! 智能合约


一、Rust 的所有权

Rust 的所有权概念使得在对 rust 的数据进行操作时需要数据的所有权,不然会引起一定的错误。所有权与作用域相对于,当我把一个值赋予 x 时,在进行 y = x 语句则会把 x 的值所有权移交给 y 除非使用 &x 引用概念。

这里需要区分整形和 String 类型的区别,具体的图解可以参看官方 Rust 文档,这使得存在了变量与数据交互的两种方式:移动、克隆,不同的操作,值的归属权不同,操作也有对应的不同。

二、引用

& 符号就是引用,它们允许你使用值但不获取其所有权,这种方式用于对数值进行使用但不进行修改的情况。

当然,通过 mut 可以将引用变成可变引用,但一般使用多个不可变引用最好。

三、Slice

Slice 可以实现对 String 类型或数组的细节操作,细节使用可以参看官方文档

这里给出所有权 + 引用 + Slice 的代码示例,相关例子可以在此代码中验证:

fn main() {
   
    let s = String::from("hello");
    
    takes_ownership(&s);
    
    println!("second:{}",s);
    
    let (s_2, len) = calculate_length(s);

    println!("The length of '{}' is {}", s_2, len);

    let x = 5;

    makes_copy(x);

    let z = String::from("hello world");

    let hello = &z[0..5]
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值