当前位置: 首页 > news >正文

邯郸网站建设方案介绍美食的网站模板

邯郸网站建设方案,介绍美食的网站模板,重庆南川网站制作公司哪家专业,运营好学吗?多久能学会学习方案:Rust程序设计指南 1、变量和可变性 声明变量:let 变量、const 常量 rust 默认变量一旦声明,就不可变(immutable)。当想改变 加 mut(mutable) 。 const 不允许用mut ,只能声明常量,…

学习方案:Rust程序设计指南

1、变量和可变性

声明变量:let 变量、const 常量

rust 默认变量一旦声明,就不可变(immutable)。当想改变 加 mut(mutable) 。

const 不允许用mut ,只能声明常量,单词全部大写下划线连接。

let特点:

可多次声明,多次声明隐蔽性、默认不可变。

mut 和隐蔽的区别:

隐蔽实际创建一个新的变量,可以改变值得类型,并复用变量名。而mut 修改值时不能转换值得类型

2、rust类型

标量 scalar:

rust有四种标量类型:整数、浮点型、bool、字符型

整型:长度为 8-128bit、arch(isize、usize)、有符号 ixxx 、无符号u***

有符号和无符号代表数字是否可为负值(有符号数)、

或永远为正(无符号数)、

isize和usize 类型依赖运行程序的计算机架构,64系统为64,32系统为32

rust 默认使用 i32 。

整形溢出:

debug模式:程序panic

release模式:二进制补码,超过最大值绕会最小值

浮点型: f32  f64 默认 f64 。32单精度,64双精度。

字符类型 char:

单引号 声明char 字面量

双引号声明 字符串字面量

复合类型 compound:

rust有两个原生的复合类型:tuple 、array  

tuple 元祖:一旦声明,长度不可变。每个位置类型可不同,可以结构,可以使用点访问索引  

数组:长度固定,类型一致, 

声明12个长度 类型为i32的数组:let x :[i32;12]=[]

创建x个值为y的数组 let arr = [x;y];

访问元素:【index】,索引超出数组时panic

函数:

函数名变量名 snake case 风格;小写下划线分割,函数签名提供参数类型。

语句和表达式

语句:不返回值,

表达式:计算产生一个值

表达式可以用变量接收,语句不能用变量接收。

rust 函数也是语句

2、所有权

及scope 作用域:

栈:

堆:

Sting:

指针:0x1111

长度:当前String使用多少字节内存,

容量:String从分配器总共获取多少字节内容。 

栈:出作用域自动调用 drop函数

堆:存在指针拷贝。可能存在重复drop,二次释放【bug】造成内存污染,安全隐患。

解决:指针拷贝后,rust认为指针一不再有效,

 let str = String::from("hello world");let str1 = str;println!("str is {str}")

【 str  value borrowed here  after move  】

js: 深拷贝、浅拷贝。

rust: move 移动

rust 深拷贝的方式 clone,重新拷贝了一份堆中数据。

【js 和 rust 关于堆数据多次引用的关系区别】:

js:多个指针指向同一个堆中数据

rust:当多个指针指向同一个堆中数据,只有最后一个指针有效,之前的全部失效,无法访问

包括 函数的实参传递。

fn test2(){let str = String::from("hello world");test3(str);println!("str is {str}") // str value borrowed after move
}fn test3(str:String){}

rust变量:栈中copy 

 let x = 111;let y = x;println!("x is {x}")  //111

弊端:不获取所有权就无法对堆数据进行访问,引出:

【reference  引用 &】

引用与指针:

引用确保指向某个堆数据的有效指针。

移动:

引用:

fn test2(){let str = String::from("hello world");test3(&str);println!("str is {str}") // hello world
}fn test3(str:&String){}

tip:

函数使用引用值作为参数,无需交换所有权,因为未曾拥有过。

将创建一个引用的行为成为借用【borrowing】,使用权而不是拥有权和处置权。

所以无法修改借用来的变量:

  fn test3(str:&String){str.push_str("8888") ;}
// error:  cannot borrow `*str` as mutable, as it is behind a `&` reference

引用同变量一样,默认不允许修改。

引出: 可变引用:

fn test2(){let str = String::from("hello world");test3(&mut str);println!("str is {str}") // hello world
}fn test3(str:&mut String){}

限制:

只能对同一个变量使用一次可变引用,因为无法清除以哪个结果为准,数据在运行时难以追踪,类式:同时append和remove同一个dom。

【数据竞争】:多个指针同时访问并异步同一数据源

在同时使用可变与不可变引用是也是类式的规则。

let str = String::from("hello world");let str1 = &str;let str2 = &mut str1; // cannot borrow `str1` as mutable, as it is not declared as mutable

一个引用的作用域从声明的地方一直持续到最后一次使用为止,如果最后一个使用不可变引用发生在可变引用之前,那么是可以的:

 let mut str = String::from("hello world");let str1 = &str;let str2 = &mut str;//error:cannot borrow `str` as mutable because it is also borrowed as immutableprintln!("str1 is {str1}");let str2 = &mut str;//ok

http://www.yayakq.cn/news/676602/

相关文章:

  • 济南地区做企业网站的公司抖音代运营服务达不到退费标准
  • 模版网站做支付功能推广策划公司
  • 有关网站空间正确的说法是十大it外包公司
  • 重庆网站建开发郑州做网站排名公司
  • 网站建设纯免费官网企业融资的三个渠道
  • 福州最好的网站建设网络公司如何制作自己的网站链接视频
  • 北京网站制作推广品牌公司设计
  • 佛山网站设计公司石油工程建设协会网站
  • 帝国cms 网站地图标签卡片风格网站
  • wpf入可以做网站吗汤阴有没有做网站的公司
  • 陕西企业网站建设价格网站栏目设计内容
  • 浦东新区网站开发h5响应式集团网站推荐
  • 成都企业网站建设 四川冠辰科技烟台市政建设招标网站
  • 转业做网站的工具网站头部优化文字怎么做
  • 买域名网站网站本身对网站打开速度有何影响
  • 做奢侈品代工厂的网站设计网站的功能有哪些内容
  • 演示公司soap公司网站西安建设网站的公司哪家好
  • 网站备案要到哪里logo在线制作设计
  • 商务网站的特点购物网站建设价位
  • 网站建站历史网站轮播图
  • 公司做铸造的招聘网站都有哪些品牌商城网站制作
  • 有哪些建筑设计网站WordPress stock
  • 韩国男女直接做的视频网站电销系统哪个好
  • app开发公司属于什么行业百家号优化上首页
  • 网站建设公司赚钱吗温州论坛招聘
  • 做网站用的是什么语言网站建设多少钱个人
  • 做阿里巴巴网站应怎样定位烟台北京网站建设公司哪家好
  • 南京建设项目环评公示期网站网站建设分金手指科捷13
  • 奔驰宝马游戏网站建设对网站建设公司说
  • vr超市门户网站建设wordpress建站位置