w3cschool 编程狮,随时随地学编程
下载APP
|
登录
个人中心
首页
入门教程
编程课程
特色实战
畅学全站
Rust 程序设计语言
开始阅读
下载APP,阅读更畅快
教程说明:
Rust
一门赋予每个人
构建可靠且高效软件能力的语言。
教程目录:
Rust 程序设计语言
Rust 前言
Rust 简介
Rust 入门指南
Rust 安装
Rust Hello, World!
Rust Hello, Cargo!
Rust 写个猜数字游戏
Rust 常见编程概念
Rust 变量和可变性
Rust 数据类型
Rust 函数
Rust 注释
Rust 控制流
Rust 认识所有权
Rust 什么是所有权?
Rust 引用与借用
Rust Slice 类型
Rust 使用结构体组织相关联的数据
Rust 结构体的定义和实例化
Rust 结构体示例程序
Rust 方法语法
Rust 枚举和模式匹配
Rust 枚举的定义
Rust match 控制流结构
Rust if let 简洁控制流
Rust 使用包、Crate 和模块管理不断增长的项目
Rust 包和 Crate
Rust 定义模块来控制作用域与私有性
Rust 引用模块项目的路径
Rust 使用 use 关键字将路径引入作用域
Rust 将模块拆分成多个文件
Rust 常见集合
Rust 使用 Vector 储存列表
Rust 使用字符串储存 UTF-8 编码的文本
Rust 使用 Hash Map 储存键值对
Rust 错误处理
Rust 用 panic! 处理不可恢复的错误
Rust 用 Result 处理可恢复的错误
Rust 要不要 panic!
Rust 泛型、Trait 和生命周期
Rust 泛型数据类型
Rust Trait:定义共同行为
Rust 生命周期确保引用有效
Rust 编写自动化测试
Rust 如何编写测试
Rust 控制测试如何运行
Rust 测试的组织结构
Rust 一个 I/O 项目:构建一个命令行程序
Rust 接受命令行参数
Rust 读取文件
Rust 重构改进模块性和错误处理
Rust 采用测试驱动开发完善库的功能
Rust 处理环境变量
Rust 将错误信息输出到标准错误而不是标准输出
Rust 中的函数式语言功能:迭代器与闭包
Rust 闭包:可以捕获环境的匿名函数
Rust 使用迭代器处理元素序列
Rust 改进之前的 I/O 项目
Rust 性能对比:循环 VS 迭代器
Rust 进一步认识 Cargo 和 Crates.io
Rust 采用发布配置自定义构建
Rust 将 crate 发布到 Crates.io
Rust Cargo 工作空间
Rust 使用 cargo install 从 Crates.io 安装二进制文件
Rust Cargo 自定义扩展命令
Rust 智能指针
Rust 使用Box<T>指向堆上的数据
Rust 通过 Deref trait 将智能指针当作常规引用处理
Rust 使用 Drop Trait 运行清理代码
Rust Rc<T> 引用计数智能指针
Rust RefCell<T> 和内部可变性模式
Rust 引用循环会导致内存泄漏
Rust 无畏并发
Rust 使用线程同时运行代码
Rust 使用消息传递在线程间传送数据
Rust 共享状态并发
Rust 使用 Sync 和 Send trait 的可扩展并发
Rust 的面向对象特性
Rust 面向对象语言的特征
Rust 顾及不同类型值的 trait 对象
Rust 面向对象设计模式的实现
Rust 模式与模式匹配
Rust 所有可能会用到模式的位置
Rust Refutability(可反驳性): 模式是否会匹配失效
Rust 所有的模式语法
Rust 高级特征
Rust 不安全 Rust
Rust 高级 trait
Rust 高级类型
Rust 高级函数与闭包
Rust 宏
Rust 最后的项目: 构建多线程 web server
Rust 构建单线程 web server
Rust 将单线程 server 变为多线程 server
Rust 优雅停机与清理
Rust 附录
Rust 附录 A:关键字
Rust 附录 B:运算符与符号
Rust 附录 C:可派生的 trait
Rust 附录 D:实用开发工具
Rust 附录 E:版本
Rust 附录 F:本书译本
Rust 附录 G:Rust 是如何开发的与 “Nightly Rust”
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录
Rust 程序设计语言
Rust 前言
Rust 简介
Rust 入门指南
Rust 安装
Rust Hello, World!
Rust Hello, Cargo!
Rust 写个猜数字游戏
Rust 常见编程概念
Rust 变量和可变性
Rust 数据类型
Rust 函数
Rust 注释
Rust 控制流
Rust 认识所有权
Rust 什么是所有权?
Rust 引用与借用
Rust Slice 类型
Rust 使用结构体组织相关联的数据
Rust 结构体的定义和实例化
Rust 结构体示例程序
Rust 方法语法
Rust 枚举和模式匹配
Rust 枚举的定义
Rust match 控制流结构
Rust if let 简洁控制流
Rust 使用包、Crate 和模块管理不断增长的项目
Rust 包和 Crate
Rust 定义模块来控制作用域与私有性
Rust 引用模块项目的路径
Rust 使用 use 关键字将路径引入作用域
Rust 将模块拆分成多个文件
Rust 常见集合
Rust 使用 Vector 储存列表
Rust 使用字符串储存 UTF-8 编码的文本
Rust 使用 Hash Map 储存键值对
Rust 错误处理
Rust 用 panic! 处理不可恢复的错误
Rust 用 Result 处理可恢复的错误
Rust 要不要 panic!
Rust 泛型、Trait 和生命周期
Rust 泛型数据类型
Rust Trait:定义共同行为
Rust 生命周期确保引用有效
Rust 编写自动化测试
Rust 如何编写测试
Rust 控制测试如何运行
Rust 测试的组织结构
Rust 一个 I/O 项目:构建一个命令行程序
Rust 接受命令行参数
Rust 读取文件
Rust 重构改进模块性和错误处理
Rust 采用测试驱动开发完善库的功能
Rust 处理环境变量
Rust 将错误信息输出到标准错误而不是标准输出
Rust 中的函数式语言功能:迭代器与闭包
Rust 闭包:可以捕获环境的匿名函数
Rust 使用迭代器处理元素序列
Rust 改进之前的 I/O 项目
Rust 性能对比:循环 VS 迭代器
Rust 进一步认识 Cargo 和 Crates.io
Rust 采用发布配置自定义构建
Rust 将 crate 发布到 Crates.io
Rust Cargo 工作空间
Rust 使用 cargo install 从 Crates.io 安装二进制文件
Rust Cargo 自定义扩展命令
Rust 智能指针
Rust 使用Box<T>指向堆上的数据
Rust 通过 Deref trait 将智能指针当作常规引用处理
Rust 使用 Drop Trait 运行清理代码
Rust Rc<T> 引用计数智能指针
Rust RefCell<T> 和内部可变性模式
Rust 引用循环会导致内存泄漏
Rust 无畏并发
Rust 使用线程同时运行代码
Rust 使用消息传递在线程间传送数据
Rust 共享状态并发
Rust 使用 Sync 和 Send trait 的可扩展并发
Rust 的面向对象特性
Rust 面向对象语言的特征
Rust 顾及不同类型值的 trait 对象
Rust 面向对象设计模式的实现
Rust 模式与模式匹配
Rust 所有可能会用到模式的位置
Rust Refutability(可反驳性): 模式是否会匹配失效
Rust 所有的模式语法
Rust 高级特征
Rust 不安全 Rust
Rust 高级 trait
Rust 高级类型
Rust 高级函数与闭包
Rust 宏
Rust 最后的项目: 构建多线程 web server
Rust 构建单线程 web server
Rust 将单线程 server 变为多线程 server
Rust 优雅停机与清理
Rust 附录
Rust 附录 A:关键字
Rust 附录 B:运算符与符号
Rust 附录 C:可派生的 trait
Rust 附录 D:实用开发工具
Rust 附录 E:版本
Rust 附录 F:本书译本
Rust 附录 G:Rust 是如何开发的与 “Nightly Rust”
关闭
MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }