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

如何建设网站济南兴田德润o简介电话长沙建站做企业网站公司

如何建设网站济南兴田德润o简介电话,长沙建站做企业网站公司,检察网站建设请示,嘉定企业网站制作Rust安装信息解释 cargo#xff1a;Rust的编译管理器、包管理器、通用工具。可以用Cargo启动新的项目#xff0c;构建和运行程序#xff0c;并管理代码所依赖的所有外部库。 Rustc#xff1a;Rust的编译器。通常Cargo会替我们调用此编译器。 Rustdoc#xff1a;是Rust的…Rust安装信息解释 cargoRust的编译管理器、包管理器、通用工具。可以用Cargo启动新的项目构建和运行程序并管理代码所依赖的所有外部库。 RustcRust的编译器。通常Cargo会替我们调用此编译器。 Rustdoc是Rust的文档工具。 基础语法 变量 Rust是强类型语言(Java、C、Rust、Go )但是具有自动判断变量类型的能力。 注意 强类型语言要求每个变量在声明时必须指定明确的数据类型并且在程序的整个生命周期中都必须遵循这个类型。语言通常会严格限制不同类型之间的隐式转换只有明确的、兼容的转换才能进行。这种语言有助于减少由于类型不匹配而导致的错误并且更容易进行静态检查和优化。 弱类型语言对变量的类型要求相对宽松。程序允许对不同类型的变量进行隐式转换语言运行时会根据需要自动进行类型转换。这虽然提供了更多的灵活性但也可能带来一些类型转换带来的潜在错误。 声明变量使用 let 关键字 let a 123; let a:u64 12;// 带类型的声明 如果上述a被声明了那么 a abc; // a已经是一个int类型 a 4.56; // a已经是一个int类型 a 456; // Rust规范在语言层面尽量少的让变量的值可以改变 上述三个是被禁止的操作a被称为不可变变量(a的值不变但是不代表它不是一个变量)这样操作是为了并发安全。 如果我们要声明一个可变变量只需加一个 mut关键字 let mut a 456 那么常量和不可变变量的区别是什么呢 不可变量如下可编译 let a 12; let a 123; 可编译 只是有warning。 如果a为常量就不可编译了 const a: i32 123; let a 456; 重影Shadowing 变量的值可以重新绑定但在重新绑定以前不能私自被改变这样可以确保在每一次绑定之后的区域里编译器可以充分的推理程序逻辑。 这里的重影实际上就是上述“重新绑定”这个概念重影即指的是变量名称可以被重新使用的机制。 重影与可变变量的赋值不是一个概念重影是指用同一个名字重新代表另一个变量实体其类型、可变属性和值都可以变化。但可变变量赋值仅能发生值的变化。 fn main() {let x 5;let x x 1;let x x * 2;println!(The value of x is: {}, x); } 数据类型 注意 Rust不支持 和 -- 在Rust中方法的调用优先级高于前缀运算符对负值进行方法调用时一定要先加负号 assert_eq!((-32760_i16).saturating_sub(10), -32768); 如果这里写成-32760_i16.saturating_sub(10)则该断言一定panic 整数类型 位长度有符号无符号8-biti8u816-biti16u1632-biti32u3264-biti64u64128-biti128u128arch(机器字)isizeusize isize 和 usize 两种整数类型是用来衡量数据大小的它们的位长度取决于所运行的目标平台如果是 32 位架构的处理器将使用 32 位位长度整型。 Rust在调用类型本身的方法之前必须确切的知道一个值属于哪种整型只有在解析完所有方法之后类型仍然不明确的时候才会默认位i32。正确示例如下 println!({}, i32::abs(-4));println!({}, (-4_i32).abs()); 用于处理溢出的多种整型算术方法 检查算法检查运算会返回结果的 Option 值如果数学意义上正确的结果可以表示为该类型的值那么就为Some(v), 否则位None如 assert_eq!(10_u8.checked_add(20), Some(30)); // 可以运行都处于u8的 0 - 2^8-1(255)范围内 assert_eq!(100_u8.checked_add(156), None); // 溢出了u8类型所以会返回 None 回绕算法会返回与“数学意义上正确的结果”对“值类型范围”取模的值相等的值如 assert_eq!(100_u16.wrapping_mul(200),20000); // 该行代码可以运行20000 u16的65535 assert_eq!(500_u16.wrapping_mul(500),53392); // 该行代码也可以运行这是因为250000 2^16, 所以会用 250000 % 2^16 最终得到的便是 53392 需要注意的是对于有符号类型的运算可能会回绕为负值。 饱和算法会返回最接近“数学意义上的正确结果”的可表达值(我理解为在计算值res溢出所选类型的最大值时取所选类型最大值计算值res所小于类型的最小值时取所选类型最小值)如 assert_eq!(32760_i16.saturating_add(10), 32767); assert_eq!((-32760_i16).saturating_sub(10), -32768); 注意不存在饱和除法饱和求余法或饱和位移法 溢出算法返回一个元组(result, overflow), result是回绕版本所返回的内容而overflowed是一个布尔值指示是否发生过溢出如 assert_eq!(255_u8.overflowing_sub(2), (253, false)); // 未溢出 assert_eq!(255_u8.overflowing_add(2), (1, true)); // 溢出返回回绕方法结果 1 浮点数类型 Rust提供了 IEEE 单精度浮点类型和 IEEE 双精度浮点类型。 let x 2.0; // f64 let y: f32 3.0; // f32 浮点类型字面量 浮点数中整数部分之后的每个部分都是可选的但是必须存在浮点数部分指数部分类型后缀中的一项。 小数部分也可以由单独.组成例如 5. 是一个浮点常量。 Rust会将整型字面量和浮点类型字面量视为不同的大类即它永远不会把整型字面量推断为浮点类型。 一些特殊值关联常量 INFINITY无穷大 NEG_INFINITY负无穷大 NAN非数值 MIN最小有限值 MAX最大有限值 使用示例 assert((-1./f32::INFINITY).is_sign_negative()) 布尔类型 truefalse if和while这样的控制结构他们的条件必须时bool表达式Rust的as运算符可以将bool转化为整型 assert_eq!(false as i32, 0) assert_eq!(true as i32, 1) 字符类型 char Rust的 char 类型大小为 4 个字节(32位)代表 Unicode标量值Java 2 字节 c/c 1字节 Rust会对单独的字符使用char类型但是对于字符串和文本流使用UTF-8编码。(所以String为UTF-8字符序列而不是类似于Java中的字符数组) 转换 在Rust中字符被视为与数值截然不同的类型char既不是u8也不是u32(尽管他确实有32位长) 尽管数值类型和char是不同的但是Rust位u8值提供了字节字面量如bX表示以字符X的ASCII作为u8值 Rust不会再char和任何其他类型之间进行隐式转换。可以使用as转换运算符将char转换为整型对于小于32位的类型该字符值的高位会被截断。 u8是唯一能够通过as运算符转换为char的类型因为Rust刻意让as运算符只执行开销极低且可靠的转换。 复合类型 元组一对 ( ) 包括的一组数据可以包含不同种类的数据 let tup: (i32, f64, u8) (500, 6.4, 1); // tup.0 等于 500 // tup.1 等于 6.4 // tup.2 等于 1 Rust代码通常会使用元组类型从一个函数返回多个值(这里很像golang原生提供的多个返回值的特性)如: let text 我是米卫兵我喜欢完原神我也喜欢玩星穹铁道; let(head, tail) text.split_at(15); println!({}, head); println!({}, tail); 零元组又被称为 单元类型 用于当无法携带任何有意义的值但是其上下文仍然要求传入某种类型时。如 fn swapT(x: mut T, y: mut T); // 上者完整写法如下 fn swapT(x: mut T, y: mut T) - (); 还有一个点需要注意在使用单个值的元组的时候一定要追加尾逗号 (hello,)如此一来便可区分普通括号表达式和元组。 数组和go类似但是需要注意的几点如下 let d [3; 5]; // 这样声明数组等效于 let d [3, 3, 3, 3, 3]; 然后就是 mut 这个关键字与不可变变量概念类似只有一个数组声明了mut后其中元素才可以被修改。 区别 元组中每个元素都可以有不同的类型而数组中所有元素必须是相同的类型。 元组只允许使用常量作为索引。如t.1, t.2 而不能使用 t.i 指针类型 不同于大多数具有垃圾回收机制的语言Rust会将内存分配保持在最低限度。默认情况下会嵌套三种指针类型 引用 String 读作 “ref String” 是对String类型的引用。表达式 x 会生成一个对x的引用在Rust 术语中我们会说它借用了对x的引用。给定一个引用r表达式 *r会引用r指向的值。 与c/cpp类似 当超出作用域时引用不会自动释放任何资源。 与c/cpp不同 Rust的引用永远不位空。 Rust会跟踪值的所有权和生命周期。 如此一来Rust在编译期就可以排除悬空指针、双重释放和指针失效等错误。 Rust引用两种形式 T 一个不可变共享引用。 mut T 一个可变的、独占引用。 Box 堆种分配内存最简单的方式Box::new如 let t (12, eggs); let b Box::new(t) // t类型为(i32, str) b类型为Boxi32, str 当b超出作用域时内存会立即被释放除非b已经被移动(move)。 不安全指针(裸指针) *mut T *const T
http://www.hkea.cn/news/14359852/

相关文章:

  • 网站做产品的审核工作蔚县做网站
  • 广东阳春市建设局网站免费flash素材网站
  • 万网云虚拟主机上传网站如何做充值网站
  • 个人网站建设中代码下载用frontpage做网站
  • 重庆公司网站搭建公司推荐写给初学网站开发们的一封信
  • 网站建设都需要那些材料如何做psd的模板下载网站
  • 关于江西建设监督网网站迁移国内电商平台有哪些
  • 买了两台服务器可以做网站吗大连城市建设档案馆官方网站
  • 网站没有被收录原因the 7 wordpress
  • layui框架的wordpress大连网站排名优化公司
  • seo网站优化是什么如何建立购物网站
  • 做网站不实名认证可以吗云虚拟机可以做几个网站
  • 怎么优化网站性能黄骅烈士
  • 杭州的网站设计企业品牌vi设计
  • 中国建设银行进不了登录网站高档网站建
  • 公司网站申请书干运维为什么会废了
  • 阿里云大学 网站建设太原汽车网站建设
  • 烟台哪里有做网站免费营销网站制作模板
  • 广州门户网站制作wordpress 分类目录 层级
  • 类似淘宝网 的淘宝客网站模板中国最大网站建设商
  • 做dj网站网站设计创新点怎么写
  • 小说网站开发需求湘潭百度推广
  • 设计公司网站制作开发app需要什么技术
  • 网站建站公司哪家价钱合理青岛网站公司哪家好
  • 网络建站海洋公司做网站推广
  • 河北省建设厅管网站企业门户网站管理要求
  • 如何提升网站seo排名如何修改网站的关键词
  • 湖北seo网站多少钱2021年9月重大新闻
  • 绍兴网站制作推广绵阳网站建设
  • 用wordpress搭建完整网站教程视频软件开发涵盖网站开发吗