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

桂林生活网分类信息网站网站里宣传视频怎么做

桂林生活网分类信息网站,网站里宣传视频怎么做,平台研发,做旅游的网站那个便宜Rust 是静态编译语言#xff0c;在编译时必须知道所有变量的类型。 基于使用的值#xff0c;编译器通常能推断出它的具体类型#xff0c;但如果可能的类型比较多#xff0c;例如把String转换为整数的parse方法#xff0c;就必须添加类型的标注#xff0c;否则编译会报错…Rust 是静态编译语言在编译时必须知道所有变量的类型。 基于使用的值编译器通常能推断出它的具体类型但如果可能的类型比较多例如把String转换为整数的parse方法就必须添加类型的标注否则编译会报错。 //报错程序不知道把字符串转换成啥类型 let guess 42.parse().expect(Not a number); //正确程序知道要转换成u32类型 let guess:u32 42.parse().expect(Not a number);在rust中每个值都有其确切的数据类型总的来说可以分为两类标量类型和复合类型。 一个标量类型意味着它代表的是一个单个的值rust有三个主要的标量类型 数值类型: 有符号整数 (i8, i16, i32, i64, isize)、 无符号整数 (u8, u16, u32, u64, usize) 、浮点数 (f32, f64)布尔类型 true和false字符类型: 表示单个 Unicode 字符存储为 4 个字节 复合类型顾名思义是指由多个标量类型的值和其他符号组合而成的数据类型。 Rust内置的复合类型有元组、数组。 一、标量类型 一整数类型 比如 i32 类型rust默认的整数值类型表示的就是有符号的 32 位整数类型 i 是英文单词 integer 的首字母与之相反的是 u代表无符号 unsigned 类型。下表显示了 Rust 中的内置的整数类型 长度视架构而定有符号类型无符号类型8 位i8u816 位i16u1632 位i32u3264 位i64u64arch架构位数如128isizei128usizeu128 类型定义的形式统一为有无符号 类型大小(位数)。无符号数表示数字只能取正数和0而有符号则表示数字可以取正数、负数还有0。就像在纸上写数字一样当要强调符号时数字前面可以带上正号或负号然而当很明显确定数字为正数时就不需要加上正号了。有符号数字以补码形式存储。 每个有符号类型规定的数字范围是 -(2n - 1) ~ 2n - 1 - 1其中 n 是该定义形式的位长度。因此 i8 可存储数字范围是 -(27) ~ 27 - 1即 -128 ~ 127。无符号类型可以存储的数字范围是 0 ~ 2n - 1所以 u8 能够存储的数字为 0 ~ 28 - 1即 0 ~ 255。 整数溢出 例如u8的范围是0-255如果你把一个u8变量的值设为256那么 在调试模式下rust会检查整数溢出如果发生溢出程序在运行时会报错。在发布模式下–releaserust不会检查可能导致报错的整数溢出。如果溢出发生会执行“环绕”操作就像一个钟表一样转圈将256变成0257变成1…以此类推且不会报错。 二浮点类型 浮点类型数字 是带有小数点的数字在 Rust 中浮点类型数字也有两种基本类型 f32 和 f64分别为 32 位和 64 位大小。默认浮点类型是 f64在现代的 CPU 中它的速度与 f32 几乎相同但精度更高。 下面是一个演示浮点数的示例 fn main() {let x 2.0; // f64let y: f32 3.0; // f32 }浮点数根据 IEEE-754 标准实现。f32 类型是单精度浮点型f64 为双精度。 三字符类型 Rust 的 char 类型是语言中最原生的字母类型。下面是一些声明 char 值的例子 fn main() {let c z;let z: char ℤ;let g 国;let heart_eyed_cat ; }Rust 的字符不仅仅是 ASCII所有的 Unicode 值都可以作为 Rust 字符包括单个的中文、日文、韩文、emoji 表情符号等等都是合法的字符类型。Unicode 值的范围从 U0000 ~ UD7FF 和 UE000 ~ U10FFFF。 由于 Unicode 都是 4 个字节编码因此字符类型也是占用 4 个字节。 四布尔类型 正如其他大部分编程语言一样Rust 中的布尔类型有两个可能的值true 和 false。Rust 中的布尔类型使用 bool 表示且布尔值占用内存的大小为 1 个字节 fn main() {let t true;let f: bool false; // 使用类型标注,显式指定f的类型if f {println!(这是段毫无意义的代码);} }使用布尔类型的场景主要在于流程控制例如上述代码的中的 if 就是其中之一。 二、复合类型 复合类型可以将多个值放在一个类型里。 Rust提供了两种基础的复合类型元组、数组。 一元组 元组是一个将多个其他类型的值组合进一个复合类型的主要方式。元组长度固定一旦声明结束其长度不会增大或缩小。 我们在小括号里将值用逗号分开来表示创建一个元组。元组中的每一个位置都有一个类型而且这些不同值的类型也不必是相同的。如下表示创建一个元组 fn main() {let tup: (i32, f64, u8) (500, 6.4, 1); }//let 元组变量名:(类型1, 类型2, 类型3) (值1, 值2, 值3);变量 tup 被绑定了一个元组值 (500, 6.4, 1)该元组的类型是 (i32, f64, u8)。 所以元组就是用括号将多个类型组合到一起。 可以使用模式匹配或者 . 操作符来获取元组中的值。 用模式匹配解构元组 fn main() {let tup (500, 6.4, 1);let (x, y, z) tup;println!(The value of y is: {}, y); }上述代码首先创建一个元组然后将其绑定到 tup 上接着使用 let (x, y, z) tup; 来完成一次模式匹配因为元组是 (n1, n2, n3) 形式的因此我们用一模一样的 (x, y, z) 形式来进行匹配元组中对应的值会绑定到变量 x y z上。这就是解构用同样的形式把一个复杂对象中的值匹配出来。 用.来访问元组 模式匹配可以让我们一次性把元组中的值全部或者部分获取出来如果只想要访问某个特定元素那模式匹配就略显繁琐对此Rust 提供了 . 的访问方式 fn main() {let x: (i32, f64, u8) (500, 6.4, 1);let five_hundred x.0;let six_point_four x.1;let one x.2; }和其它语言的数组、字符串一样元组的索引从 0 开始。 二数组 另一个包含多个值的方式是 数组array。 与元组不同数组中的每个元素的类型必须相同。Rust 中的数组与一些其他语言中的数组不同Rust 中的数组长度是固定的。 在 Rust 中数组是这样定义的 fn main() {let a [1, 2, 3, 4, 5]; }数组语法跟 JavaScript 很像也跟大多数编程语言很像。由于它的元素类型大小固定且长度也是固定因此数组 array 是存储在栈上性能也会非常优秀。 但是数组却没有动态数组Vector灵活。vector 类型是标准库提供的一个 允许 增长和缩小长度的类似数组的集合类型我们称为“动态数组”。动态数组 Vector 是存储在堆上因此长度可以动态改变。当你不确定是使用数组还是动态数组时那就应该使用后者。 举个例子在需要知道一年中各个月份名称的程序中你很可能希望使用的是数组而不是动态数组。因为月份是固定的它总是只包含 12 个元素 let months [January, February, March, April, May, June, July,August, September, October, November, December];在一些时候还需要为数组声明类型如下所示 let a: [i32; 5] [1, 2, 3, 4, 5];这里数组类型是通过方括号语法声明i32 是元素类型分号后面的数字 5 是数组长度数组类型也从侧面说明了数组的元素类型要统一长度要固定。 还可以使用下面的语法初始化一个某个值重复出现 N 次的数组 let a [3; 5]; // let a [3,3,3,3,3]a 数组包含 5 个元素这些元素的初始化值为 3不难发现这种语法跟数组类型的声明语法其实是保持一致的[3; 5] 和 [类型; 长度]。在元素重复的场景这种写法要简单的多。 访问数组元素 因为数组是Stack上分配的单个块内存元素的存放顺序是连续的因此可以通过索引的方式来访问存放其中的元素 fn main() {let a [9, 8, 7, 6, 5];let first a[0]; // 获取a数组第一个元素let second a[1]; // 获取第二个元素 }与许多语言类似数组的索引下标是从 0 开始的。此处first 获取到的值是 9second 是 8。 如果访问的索引超出了数组的范围那么就会引发越界访问错误。 如果是显性的越界访问错误那么rust就会在编译时及时阻止我们 fn main() {let a [9, 8, 7, 6, 5];let s a[5];println!({},s); } // let s a[5]; index out of bounds: the length is 5 but the index is 5如果是隐性的越界访问错误那么rust编译会通过但运行时程序会崩溃报错 use std::io;fn main() {let a [1, 2, 3, 4, 5];println!(Please enter an array index.);let mut index String::new();// 读取控制台的输出io::stdin().read_line(mut index).expect(Failed to read line);//读取到的字符串转为无符号整型数字let index: usize index.trim().parse().expect(Index entered was not a number);//索引访问let element a[index];println!(The value of the element at index {} is: {},index, element); }使用 cargo run 来运行代码因为数组只有 5 个元素如果我们试图输入 5 去访问第 6 个元素则会访问到不存在的数组元素最终程序会崩溃退出。 这就是数组访问越界访问了数组中不存在的元素导致 Rust 运行时错误。程序因此退出并显示错误消息未执行最后的 println! 语句。
http://www.zqtcl.cn/news/272263/

相关文章:

  • 网站建设协议书 保密条款免费发布推广的网站
  • 网站首页外链上海网站建设联系方式
  • 陕西网站建设优化技术2023年1月热点新闻事件
  • 广东省建设银行招聘网站免费搭建个人网站
  • 知名商城网站建设公司wordpress主题 汉化
  • 网站上线做什么pc网站如何做移动适配
  • wap网站搭建北京北京网站建设
  • 放心的网站设计制作免费做logo设计的网站
  • 温州专业手机网站制作多少钱移动商城 网站建设方法方式
  • 周口网站开发wordpress
  • 如何查网站的备案号玉环在哪里做网站
  • 网站开发什么叫前端后端seo研究中心晴天
  • 邢台建筑类的建设网站代刷网站只做软件下载
  • 关于旅游的网站建设目的食品网站建设的目的
  • 开发php网站开发太湖网站建设推荐秒搜科技
  • 90设计网站怎么绑定手机号淘宝搜索排名
  • 无锡自助做网站哪些编程语言适合网站开发
  • 蒲城网站建设wzjseo北京专业推广公司
  • 阳春做网站外贸建站推广公司
  • 哪个网站的课件做的好源码之家关闭了
  • 各大网站热搜榜排名嵊州网站
  • 在哪找做网站的镇江网页设计工作室
  • 做网站的是干嘛的百度推广的几种方式
  • 临沧网站建设用eclipse做jsp网站
  • 做物流运输网站电话做网站看
  • 山东公司网站推广优化什么网站做宣传好
  • 企业网站模板设计外网vp(永久免费)加速器下载
  • 消费者联盟网站怎么做中山网站建设案例
  • 郑州市多商家网站制作公司网站建设要学多少课程
  • 现在网站开发模式淄博网站建设设计公司