rust

Rust笔记系列前言

断了今生、忘了曾经 提交于 2020-02-29 04:56:03
从今天开始,我会陆续在这里记录rust学习过程中的笔记和心得体会。希望能把实在的东西记录下来,对别人也有所帮助。 这些笔记仅仅是一些重点和官方教程中没有讲清楚的地方,所以不能将这个笔记系列作为一套教程来学习。但我相信这些笔记会对今后的Rust中文书籍的出版有所帮助的。 目前Rust社区的核心资料是下面这些: https://www.rust-lang.org 官网 http://doc.rust-lang.org/book/README.html 官方book http://rustbyexample.com 官方例子 https://doc.rust-lang.org/stable/reference.html 语言说明 https://doc.rust-lang.org/stable/std/ std库API https://play.rust-lang.org/ 官方提供的web调试板 http://crates.io/ 官方唯一rust仓库 https://users.rust-lang.org/ rust官方论坛 https://www.reddit.com/r/rust rust的最新资讯 https://stackoverflow.com/questions/tagged/rust rust的一些问答 希望Rust社区越来越壮大! 来源: https://www

【语言】Rust语言学习资源

时光怂恿深爱的人放手 提交于 2020-02-29 04:55:34
一份在线文档: https://doc.rust-lang.org/stable/rust-by-example/hello.html Rust 1.0 前两天发布了正式版,该项目是 Rust 编程语言的电子书,开源的,提供 MOBI MD HTML EPUB LETTER PDF A4 PDF 等多种格式。 在线浏览: http://doc.rust-lang.org/book/ GitBook: https://github.com/killercup/trpl-ebook Rust 程序设计语言(第一版) 简体中文版: https://kaisery.gitbooks.io/rust-book-chinese/content/ Rust 语言中文版-极客学院: http://wiki.jikexueyuan.com/project/rust/ Rust 是 Mozilla 开发的注重安全、性能和并发性的编程语言。Rust 是针对多核体系提出的语言,并且吸收一些其他动态语言的重要特性,比如不需要管理内存,比如不会出现 Null 指针等。本书是官方文档的中文翻译版,内容不仅涉及入门级的基础知识点,也涉及 Rust 语言的高级用法,帮助读者了解这门系统编程语言。 适用人群 Rust 语言吸收了当下流行开发语言的优点,开发的目的是替代 C++ 语言,本书适合使用 C++

google新操作系统Fuchsia

谁说我不能喝 提交于 2020-02-27 20:19:24
前言 Fuchsia,是由Google公司开发的继Android和Chrome OS之后的第三个系统,已在Github中公开的部分源码可以得知。Google对于Fuchsia的说明是“Pink(粉红)+Purple(紫色)=Fuchsia(灯笼海棠,一个新的操作系统)”。 开发语言 谷歌新一代开源操作系统 Fuchsia 的开发者网站上公布了一份 Fuchsia 编辑语言策略,文档描述了 C、C++、Dart、Rust 与 Go 的优劣势,并明确指定了其中哪些语言将会在 Fuchsia 开发生态中得到怎样程度的支持。 C 优点: C 是一种广泛使用的语言。该语言具有易于理解的特性,已在很长一段时间内保持稳定,并且过去已用于构建类似的系统。该语言具有成熟的工具链和相关的开发人员工具; C 具有稳定的 ABI,它使 Fuchsia SDK 包含预编译的二进制文件,供最终开发人员重新使用; 许多语言可以使用外部函数接口与 C 互操作。支持 C 可使最终开发人员更轻松地将这些语言与 Fuchsia 集成在一起; 我们目前的终端开发人员已经在使用该语言。 缺点: 对异步编程的支持很弱; 用该语言编写的程序通常会由于缺乏内存安全性而导致安全漏洞。 用该语言编写的程序通常包含资源泄漏,因为该语言不提供自动释放资源的功能。 与 C++ 相比,类型安全性较弱。简单地将某些 C 代码重新编译为 C+

How do you borrow a mutable reference during a match?

爷,独闯天下 提交于 2020-02-27 17:28:40
问题 I found this but could not get my code to work. I still have the sneaking suspicion that I need ref somehow. I am trying to make a reasonable Table class in Rust to learn more about the language and running into some trouble with understanding the borrow checker and mutability concepts as well as their corresponding syntax. I want the table class to be flexible and allow for different column types where the data types within the columns are homogeneous. So, a column of ints, floats, strings

11个默克尔树开源项目

北慕城南 提交于 2020-02-27 09:40:22
Merkle树是一种可以有效验证部分数据存在于指定数据集并且未被篡改的高效的哈希树结构,作为一种底层技术广泛应用在各种区块链的实现当中,对于商品溯源、知识产权确认、区块链公证等区块链应用起着重要的作用。本文介绍11个主流的merkle树开源实现,你可以在自己的项目中应用。 区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple 1、ethereumjs/merkle-patricia-tree - 以太坊官方merkle树实现 merkle-patricia-tree是以太坊黄皮书中的改进merkle patricia树的实现。目前仅支持leveldb作为存储后端。 开发语言:TypeScript/JavaScript 源码下载: https://github.com/ethereumjs/merkle-patricia-tree 2、google/Trillian - 大规模可验证数据存储 Trillian是google提供的一个透明的、高度可伸缩的密码学可验证数据存储库,它采用MySQL或MariaDB作为后端存储层,可以支持非常大规模的merkle树。Trillian通过gRPC提供服务接口。 开发语言:Golang 源码下载: https://github.com

Yew 框架 (一)

删除回忆录丶 提交于 2020-02-27 07:47:34
Yew 框架 Yew 是 Rust 语言生态中最为成熟的前端应用框架。框架的具体介绍及使用方法详见Yew官网 https://yew.rs/docs/ ,官网刚做好没有多久。 最简单的Yew应用 最简单的Yew应用只包含一个组件,即根组件,和一个main()方法。 use yew::{html, Component, ComponentLink, Html, ShouldRender}; pub struct Model { link: ComponentLink<Self>, } pub enum Msg { Click, } impl Component for Model { type Message = Msg; type Properties = (); fn create(_: Self::Properties, link: ComponentLink<Self>) -> Self { Model { link } } fn update(&mut self, msg: Self::Message) -> ShouldRender { match msg { Msg::Click => {} } true } fn view(&self) -> Html { html! { <div> <button onclick=self.link.callback(|_| Msg

Rust语言宏原理及开发教程

时光毁灭记忆、已成空白 提交于 2020-02-27 01:32:29
Rust语言最强大的一个特点就是可以创建和利用宏/Macro。不过创建Rust宏看起来挺复杂,常常令刚接触Rust的开发者心生畏惧。这片文章的目的就是帮助你理解Rust Macro的基本运作原理,学习如何创建自己的Rust宏。 相关链接: 在线学编程 1、什么是Rust的宏/Macro? 如果你尝试过Rust,应该已经用过Rust的宏了: println! 。这个宏可以在终端输出一行文本,并且支持变量的插值。 简单地说,Rust宏让你可以发明自己的语法,编写出可以自行展开的代码,也就是我们通常所说的 元编程 ,你甚至可以用Rust宏来创作自己的DSL。 Rust宏的基本运作机制就是:首先匹配宏规则中定义的模式,然后将匹配结果绑定到变量,最后展开变量替换后的代码。 不理解也没有关系,让我们继续看。 2、如果创建Rust宏/Macro? 可以使用Rust预置的 macro_rules! 宏来创建一个新的Rust宏。 下图展示了如何创建一个空白的Rust宏: hey! ,这个宏什么功能也没有,我们现在只关注它的结构: () => {} 看起来很神秘,因为它不是标准的rust语法,是macro_rules!这个宏自己发明的,用来表示一条宏规则, => 左边是匹配模式,右边是等待展开的代码: 左边的小括号部分是Rust宏的匹配器/Matcher,用来匹配模式并捕捉变量

window10 rust配置相关

两盒软妹~` 提交于 2020-02-26 23:44:52
visual studio buil tool安装 下载地址 某些python包也依赖这个 rust环境搭配步骤 新建环境变量CARGO_HOME 比如:E:\rust\cargo 新建环境变量RUSTUP_HOME 比如:E:\rust\rust 运行rustup_init.exe rust环境卸载 rustup self uninstall 来源: oschina 链接: https://my.oschina.net/youcodeme/blog/3160125

记rust的引用例子

拟墨画扇 提交于 2020-02-26 15:43:16
1 impl Solution { 2 pub fn flood_fill(image: Vec<Vec<i32>>, sr: i32, sc: i32, new_color: i32) -> Vec<Vec<i32>> { 3 let mut image = image; 4 let origin_Color = image[sr as usize][sc as usize].clone(); 5 Self::dfs(&mut image, sr, sc, origin_Color, new_color); 6 image 7 } 8 fn dfs(image: &mut Vec<Vec<i32>>, sr:i32, sc:i32, origin_Color:i32, new_color:i32) { 9 if sr < 0 || sc < 0 || sr >= image.len() as i32 || sc >= image[0].len() as i32 || image[sr as usize][sc as usize] == new_color || image[sr as usize][sc as usize] != origin_Color { 10 return; 11 } 12 image[sr as usize][sc as usize] = new