lanrustrust废料有什么用意思

Analyzing metagenomes with HUManN, LEfSe, and GraPhlAn — PICRUSt 1.1.2 documentation
Providing the metadata is optional. For more information, please refer to the .
Converting BIOM files to TSV format
BIOM files can be converted to TSV format using the tools provided by the
package (Please refer to the
for more information). Use the following command to convert biom files to TSV format
biom convert -i input_table.biom -o output_table.tsv -b
Please make sure to remove the first line in the output file (output_table.tsv):# Constructed from biom file, and save the file in the current format.
Running HUMAnN
The TSV input files can then be copied to the input folder in the HUMAnN repository (i.e. ../humann/input/). To execute HUMAnN, run the following command from the main repository path (i.e. ../humann/)
This command will create an output directory in the main repository (i.e. ../humann/output), which will contain all the analysis results for each input file submitted.
Differential abundance analysis with LEfSe
Any of the output HUMAnN files named as: 04b-*-mpt-*.txt or 04b-*-mpm-*.txt can then be used as input for further analysis with
equivalently. Please follow the instructions below to make the input appropriate for LEfSe,
Select a file from the HUMAnN output folder (named 04b-*-mpt-*.txt or 04b-*-mpm-*.txt)
Open the file in Microsoft Excel or a text editor.
Remove the first column.
Remove every metadata row (anything including and above InverseSimpson) except the class (and optional subclass), and the top row: ID/NAME.
Please ensure only 1-2 metadata rows remain apart from the Name/ID row at the top.
Save the modifications to the file, and use this version of the file as an input for LEfSe.
Load data with LEfSe by clicking on the Choose file button. Select the modified output file, and click on the Execute button.
Once the data has been uploaded (the file will appear on the right-hand-side panel), proceed with formatting the data for LEfSe by clicking the link Format Data for LEfSe in the panel on the left, and selecting the data from the drop-down menu.
Follow the instructions to select the correct fields in the drop-down menus, and then click on the Execute button.
Once the data is formatted, click on the LDA Effect Size link in the panel on the left.
Select the formatted data from the Select Data drop-down menu and press Execute.
The output generated from the step above can be used as input for the following.
Plot the LEfSe results using the Plot LEfSe Results link in the panel on the left.
Plot a Cladogram using the Plot Cladogram link in the panel on the left.
Plot Differential Features using the Plot Differential Features link in the panel on the left.
Visualization with GraPhlAn
Either of the
output files 04b-*-mpt-*-graphlan_tree.txt or 04b-*-mpm-*-graphlan_tree.txt
can be used as input for further analysis with
equivalently.
Click the link Load input tree in the panel on the left, and select the output file from HUMAnN by clicking on the Choose file button. Press the Execute button to upload the file.
After the data has been uploaded, click on the Annotate tree link to add all the graphical features. Then, select the input file from the Input File drop-down menu. Specify the data fields according to the desired output, and press the Execute button when done. For example, the fields specified for a figure with leaf node names would be as follows:
Select the clades of interest from the list Select clade(s).
Enter * for the field Annotation Label.
Specify Clade leaf nodes from the drop-down menu Annotation Label Clade Selector.
Click on the Add rings to the tree link, and select the annotated data from the above step (instead of your raw input in Step 1) from the Input Tree drop-down menu. Upload the 04b-*-graphlan_rings.txt file (can be found under /humann/output/) through the Get Data link (located in the LOAD DATA MODULE in the panel on the left). Select the 04b-*-graphlan_rings.txt file from the Ring input File drop-down menu, and press Execute.
To plot the final tree, click on the Plot tree link in the panel on the left, and select the output from the step above. Press Execute. To visualize the results, click on the Eye symbol next to the output file generated in the panel on the right.&&&&中国建筑工业出版社公共建筑&绿色建筑和低能耗建筑示范工程:公共建筑的技术创新与实践&住房和...
邀请好友参加吧
版 次:1页 数:202字 数:330000印刷时间:日开 本:16开纸 张:轻型纸包 装:平装-胶订是否套装:否国际标准书号ISBN:5所属分类:&&&
下载免费当当读书APP
品味海量优质电子书,尊享优雅的阅读体验,只差手机下载一个当当读书APP
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读&p&大家好,最近经常在尝试写一些文章,主要是为了练练文笔。这一次,我来尝试写写Rust的教程,面向已经懂了至少一门其他语言的人。这套教程会比较有针对性,通过与其他语言的比较来讲述。并不是鼓励大家使用Rust来编程甚至工作,也不想讨论哪个好哪个坏。毕竟对大部分人来说,编程语言都是一些工具,能够很好的完成工作,就是坠吼的。但是Rust确实是一门有自己特色的语言,我会从最有特色的部分开始讲起。如果大家有时间,如果你之前没有接触过Rust,或者只是看过《对XX语言的分析》之类的,不妨读读看,希望能对你有所帮助。&/p&&h2&Rust 的核心价值:跑的和C/C++几乎一样快,然后不会segfault! &/h2&&p&Rust 是一门像C/C++那样通过LLVM编译到本地指令的语言,但是在通常情况下,是一门像C#那样,只有异常抛出(异常在rust里当作assert来用)而不会像C/C++那样因为野指针、空指针引用而发生coredump的语言。Rust使用它的类型系统来保证这一点。但是在若干情况下需要与裸指针打交道,在这种时候,可以写unsafe { } 来把这部分标记出来。编译器对这部分降低要求,从而允许你与外部C语言接口打交道、直接操纵内存等等。(啊,就为了少写unsafe关键字,你就自然会把这部分封装起来了对不对)&/p&&p&Rust 的类型系统不仅保证不会segfault,还顺带着把数据竞争的问题也解决了。这个接下来就会讲到。&/p&&p&Rust 的类型系统不能保证的几件事:1、不能保证没有内存泄漏(快用LSan) 2、不能保证没有死锁(快用TSan) 3、在unsafe代码里造成的副作用如果没有妥善处理仍然可能产生安全问题(快用ASan)。&/p&&h2&怎么做到的?&/h2&&p&接下来我们来讲讲Rust里的类型。&/p&&p&&b&首先我们需要一些铺垫:&/b&我先自己定义两个类型,嗯,来点大家都熟悉的吧。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&enum Color {
&/code&&/pre&&/div&&p&现在我们就有了一个类型Color。很简单,对吧。&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&k&&enum&/span&&span class=&w&& &/span&&span class=&n&&Fruit&/span&&span class=&w&& &/span&&span class=&p&&{&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&n&&Apple&/span&&span class=&p&&(&/span&&span class=&n&&Color&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&kt&&usize&/span&&span class=&p&&),&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&n&&Banana&/span&&span class=&p&&{&/span&&span class=&n&&len&/span&&span class=&o&&:&/span&&span class=&w&& &/span&&span class=&kt&&usize&/span&&span class=&p&&},&/span&&span class=&w&&&/span&
&span class=&p&&}&/span&&span class=&w&&&/span&
&/code&&/pre&&/div&&p&这个就是被称作ADT的东西,在C/C++里你可能用一个整数表示标签(Apple 或者 Banana)加上一个union表示数据。在Rust里就语法上直接支持啦。&/p&&p&然后我们来一个苹果:&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&n&&Fruit&/span&&span class=&o&&::&/span&&span class=&n&&Apple&/span&&span class=&p&&(&/span&&span class=&n&&Color&/span&&span class=&o&&::&/span&&span class=&n&&Red&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&mi&&10&/span&&span class=&p&&);&/span&&span class=&w&&&/span&
&/code&&/pre&&/div&&p&默认是像函数式编程语言一样是只读的,比如a这个苹果在它存在的期间它就一直是红色10厘米宽。如果我们知道它有可能会改变,那我们就加一个mut标记。&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&k&&mut&/span&&span class=&w&& &/span&&span class=&n&&b&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&n&&Fruit&/span&&span class=&o&&::&/span&&span class=&n&&Banana&/span&&span class=&p&&{&/span&&span class=&n&&len&/span&&span class=&o&&:&/span&&span class=&w&& &/span&&span class=&mi&&18&/span&&span class=&p&&};&/span&&span class=&w&&
&/code&&/pre&&/div&&p&这时候可以修改它,比如:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&b.len += 1;
&/code&&/pre&&/div&&p&顺便说圆括号表示元组(tuple),方括号表示数组(array),花括号表示键值对(key-value pair).&/p&&p&上面这些很多语言都有,&b&接下来重点来了&/b&。我们来解决数据竞争的问题。&/p&&p&我们在其他语言里解决数据竞争的办法就是加锁。除了基本&a href=&/?target=https%3A//zh.wikipedia.org/wiki/%25E4%25BA%%%25E9%& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&互斥锁&i class=&icon-external&&&/i&&/a&以外,还有一种锁叫做读写锁。就是N个人来同时read或者1个人独自write的时候,是安全的。&/p&&p&Rust把这个机制嵌到了Rust类型体系里。对于所有的类型T和任意的生命周期参数‘a,都能衍生出两种类型:&'a T 和 &mut 'a T,这两个怪模样的类型表示对T类型值的引用(相当于C/C++的引用指针),是这个体系的关键。&'a T 相当于T的读取器,持有T的读锁, &mut 'a T 相当于T的写入器,持有T的写锁。内部实现相当于C/C++的指针。编译器里有一个工具borrowck,在编译时会自动检查这两种类型的使用情况,如果有非法的使用,就报错,不让你编译通过。同样地,当你手中还持有着对一个值的引用时,编译器不允许将其移动或者销毁。这样,就杜绝了野指针现象和数据竞争问题。&/p&&p&以上这些发生在编译期,这些检查是静态分析,在程序运行时没有额外代价。如果你需要实际的锁的话(逻辑复杂的时候就会需要),在标准库里有对应的仿照这个模式建立的有实体的运行时的锁,使用的时候方法是相似的。&/p&&p&然后我们来看看实际的规则: &/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&let ra = &a;
&/code&&/pre&&/div&&p&拿到了a对应的&’a Fruit,其中'a 是自动推导的。&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&ra2&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&o&&&&/span&&span class=&k&&mut&/span&&span class=&w&& &/span&&span class=&n&&a&/span&&span class=&p&&;&/span&&span class=&w&& &/span&
&span class=&c1&&// COMPILE ERROR: cannot borrow immutable local variable `a` as mutable&/span&
&/code&&/pre&&/div&&p&这样就不行了,因为 a 是只读的&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&let rb0 = &b;
&/code&&/pre&&/div&&p&这个可以。 &/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&let rb1 = &
&/code&&/pre&&/div&&p&这个也可以,但是不能在rb0的存活期间,否则会:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&// COMPILE ERROR: cannot borrow immutable local variable `a` as mutable
&/code&&/pre&&/div&&p&可以临时将&mut T的值borrow为 &T 来使用,但是产生的临时的&T存在期间,&mut T暂时处于冻结状态,不能访问。同样地,&mut T 存在期间,原始的T也是处于冻结状态的。&/p&&p&同时,这种值的传递(赋值),在Rust这边遵守一套特定的规则,称为转移语义,有兴趣的话可以预习一下C++11里的右值引用和转移语义的部分,我们下次来讲解Rust的做法。&/p&&p&这一篇就到这里,感谢阅读!&/p&&p&下一篇:
&a href=&/p/& class=&internal&&学一点Rust又不会怀孕(2) - 知乎专栏&/a&&/p&
大家好,最近经常在尝试写一些文章,主要是为了练练文笔。这一次,我来尝试写写Rust的教程,面向已经懂了至少一门其他语言的人。这套教程会比较有针对性,通过与其他语言的比较来讲述。并不是鼓励大家使用Rust来编程甚至工作,也不想讨论哪个好哪个坏。毕竟…
&figure&&img src=&/50/v2-e52e6e912fc6dff7ad9fb_b.jpg& data-rawwidth=&700& data-rawheight=&465& class=&origin_image zh-lightbox-thumb& width=&700& data-original=&/50/v2-e52e6e912fc6dff7ad9fb_r.jpg&&&/figure&&p&&i&本文试图从语义角度来解释Rust所有权的概念,以便帮助降低Rust的学习曲线。&/i&&/p&&p&编程语言的内存管理,大概可以分为自动和手动两种。自动管理就是用GC(垃圾回收)来自动管理内存,像Java、Ruby、Golang、Elixir等语言都依赖于GC。而C/C++却是依赖于手工管理内存,程序员使用malloc和free函数来分配释放内存。GC技术经过这么多年的发展,是相对安全的内存管理,也解放了程序员,但是在一些系统级编程领域,实际上是需要避免GC,因为GC会引起“世界暂停”,这将带来性能问题,所以在系统级编程领域C/C++占绝对的霸主地位。但是,有C/C++就够了吗?靠手工来管理内存,会带来很多安全问题,比如悬垂指针,诚然有最佳实践引导,就算经验丰富的熟手也难以避免类似内存安全的错误。&/p&&p&Rust的出现,就是为了解决这个痛点,它强大的所有权系统,就像是黑暗中的明灯。我曾经也对其感到疑虑,这凭空产生的Rust的所有权系统是不是拍脑袋发明的,这真的是解决内存安全问题的“银弹”吗?其实历史上也曾经有过解决内存安全问题的努力,比如Cyclone语言,它是一门对C语言进行安全升级的语言,基于区域(region,有点和Rust所有权系统中的生命周期相类似)的内存管理,避免一些潜在的内存安全问题,但是,功能极其有限,类似的尝试还有ML Kit。就是这些早期的方案,给了Rust语言灵感,才造就现在的所有权系统,所以Rust的所有权系统并非凭空产生。至于是不是“银弹”,还不敢下结论,至少,Rust的所有权系统是迄今为止最精妙最科学的方案了。
&/p&&figure&&img src=&/v2-f77f5bbae6757_b.jpg& data-rawwidth=&256& data-rawheight=&197& class=&content_image& width=&256&&&/figure&&p&&br&&/p&&h2&语义模型&/h2&&p&什么叫语义模型?语义,顾名思义,是指语言的含义。我们在学习一个新概念的时候,首先就要搞明白它的语义。而语义模型,是指语义构建的心智模型,因为概念点不是孤立存在的,彼此之间必然有紧密的联系,我们通过挖掘其语义之间的关联规则,在你的认知中形成一颗“语义树”,这样的理解才是通透的。所有权的“语义树”,如下图所示:&/p&&figure&&img src=&/v2-c82aa75681accbeb4b39eda028feb7bc_b.png& data-rawwidth=&1406& data-rawheight=&1012& class=&origin_image zh-lightbox-thumb& width=&1406& data-original=&/v2-c82aa75681accbeb4b39eda028feb7bc_r.png&&&/figure&&p&上图中的语义树,主要是想表达下面几层意思:&/p&&ol&&li&所有权是有好多个概念系统性组成的一个整体概念。&/li&&li&let绑定,绑定了什么?变量 + 作用域 + 数据(内存)。&/li&&li&move、lifetime、RAII都是和作用域相关的,所以想理解它们就先要理解作用域。&/li&&/ol&&h2&所有权&/h2&&p&所有权,顾名思义,至少应该包含两个对象:“所有者”和“所有物”。在Rust中,“所有者”就是变量,“所有物”是数据,抽象来说,就是指某一片内存。let关键字,允许你绑定“所有者”和“所有物”,比如下面代码:&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&num&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&nb&&String&/span&&span class=&o&&::&/span&&span class=&n&&from&/span&&span class=&p&&(&/span&&span class=&s&&&42&&/span&&span class=&p&&);&/span&&span class=&w&&&/span&
&/code&&/pre&&/div&&p&let关键字,让num绑定了42,那么可以说,num拥有42的所有权。但这个所有权,是有范围限制的,这个范围就是作用域(scope),准确来说,应该叫拥有域(owner scope)。换句话说,num在当前作用域下,拥有42的所有权。如果它要进入别的作用域,就必须交出所有权。比如下面的代码:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&let num = String::from(&42&);
let num2 =
&/code&&/pre&&/div&&p&let关键字会开启一个隐藏作用域,我们可以借助于MIR来查看,编译这两行代码,查看其MIR:&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&n&&scope&/span&&span class=&w&& &/span&&span class=&mi&&1&/span&&span class=&w&& &/span&&span class=&p&&{&/span&&span class=&w&&&/span&
&span class=&w&&
&span class=&w&&
&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&_1&/span&&span class=&o&&:&/span&&span class=&w&& &/span&&span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&string&/span&&span class=&o&&::&/span&&span class=&nb&&String&/span&&span class=&p&&;&/span&&span class=&w&&
&/span&&span class=&c1&&// &num& in scope 1 at &anon&:4:8: 4:11&/span&
&span class=&w&&
&span class=&w&&
&/span&&span class=&n&&scope&/span&&span class=&w&& &/span&&span class=&mi&&2&/span&&span class=&w&& &/span&&span class=&p&&{&/span&&span class=&w&&&/span&
&span class=&w&&
&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&_2&/span&&span class=&o&&:&/span&&span class=&w&& &/span&&span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&string&/span&&span class=&o&&::&/span&&span class=&nb&&String&/span&&span class=&p&&;&/span&&span class=&w&& &/span&&span class=&c1&&// &num2& in scope 2 at &anon&:5:8: 5:12&/span&
&span class=&w&&
&span class=&w&&
&/span&&span class=&p&&}&/span&&span class=&w&&&/span&
&span class=&w&&
&span class=&p&&}&/span&&span class=&w&&&/span&
&/code&&/pre&&/div&&p&Scope
1就是num所在的作用域,scope 2是num2所在的作用域。当你此时想像下面这样使用num的时候:
&/p&&div class=&highlight&&&pre&&code class=&language-rust&&&span&&/span&&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&num&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&nb&&String&/span&&span class=&o&&::&/span&&span class=&n&&from&/span&&span class=&p&&(&/span&&span class=&s&&&42&&/span&&span class=&p&&);&/span&&span class=&w&&&/span&
&span class=&kd&&let&/span&&span class=&w&& &/span&&span class=&n&&num2&/span&&span class=&w&& &/span&&span class=&o&&=&/span&&span class=&w&& &/span&&span class=&n&&num&/span&&span class=&p&&;&/span&&span class=&w&&&/span&
&span class=&n&&println&/span&&span class=&o&&!&/span&&span class=&p&&(&/span&&span class=&s&&&{:?}&&/span&&span class=&p&&,&/span&&span class=&w&& &/span&&span class=&n&&num&/span&&span class=&p&&);&/span&&span class=&w&&&/span&
&/code&&/pre&&/div&&p&编译器会报错:error[&a href=&/?target=https%3A//doc.rust-lang.org/error-index.html%23E0382& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&E0382&i class=&icon-external&&&/i&&/a&]: use of moved value:
`num`。因为num变量的所有权已经转移了。&/p&&h2&移动(move)语义&/h2&&p&移动,是指所有权的转移。什么时候所有权会转移呢?就是当变量切换作用域的时候,所谓移动,当然是从一个地方挪到另一个地方。其实你也可以这样认为,当变量切换到另一个作用域,它在当前作用域的绑定将会失效,它拥有的数据则会在另一个作用域被重新绑定。&/p&&p&但是对于实现了Copy Trait的类型来说,当移动发生的时候,它们可以Copy的副本代替自己去移动,而自身还保留着所有权。比如,Rust中的基本数字类型都默认实现了Copy Trait,比如下面示例:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&let num = 42;
let num2 =
println!(&{:?}&, num);
&/code&&/pre&&/div&&p&此时,我们打印num,编译器不会报错。num已经move了,但是因为数字类型是默认实现Copy Trait,所以它move的是自身的副本,其所有权还在,并未发生转移,通过编译。不过需要注意的是,Rust 不允许自身或其任何部分实现了Drop trait 的类型使用Copy trait。&/p&&p&当move发生的时候,所有权被转移的变量,将会被释放。
&/p&&h2&作用域(Scope)&/h2&&p&没有GC帮助我们自动管理内存,我们只能依赖所有权这套规则来手工管理内存,这就增加了我们的心智负担。而所有权的这套规则,是依赖于作用域的,所以我们需要对Rust中的作用域有一定了解。&/p&&p&我们在之前的描述中已经见过了隐式作用域,也就是在当前作用域中由let开启的作用域。在Rust中,也有一些特殊的宏,比如println!(),也会产生一个默认的scope,并且会隐式借用变量。除此之外,更明显的作用域 范围则是函数,也就是说,一个函数本身,就是一个显式的作用域。你也可以使用一对花括号({})来创建显式的作用域。&/p&&p&除此之外,一个函数本身就显式的开辟了一个独立的作用域。比如:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&fn sum(a: u32, b: u32) -& u32 {
fn main(){
let a = 1;
let b = 2;
sum(a, b);
&/code&&/pre&&/div&&p&上面的代码中,当调用sum函数的时候,a和b当作参数传递过去,此时就会发生所有权move的行为,但是因为a和b都是基本数据类型,实现了Copy Trait,所以它们的所有权没有被转移。如果换了是没有实现Copy Trait的变量,所有权就会被转移。&/p&&p&作用域在Rust中的作用就是制造一个边界,这个边界是所有权的边界。变量走出其所在作用域,所有权会move。如果不想让所有权move,则可以使用“引用”来“出借”变量,而此时作用域的作用就是保证被“借用”的变量准确归还。&/p&&h2&引用和借用&/h2&&p&有的时候,我们并不想让变量的所有权转移,比如,我写一个函数,该函数只是给某个数组插入一个固定的值:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&fn push(vec: &mut Vec&u32&) {
vec.push(1);
fn main(){
let mut vec = vec![0, 1, 3, 5];
push(&mut vec);
println!(&{:?}&, vec);
&/code&&/pre&&/div&&p&此时,我们把数组vec传给push函数,就不希望把所有权转移,所以,只需要传入一个可变引用&mut vec,因为我们需要修改vec,这样push函数就得了vec变量的可变借用,让我们去修改。push函数修改完,会将借用的所有权归还给vec,然后println!函数就可以顺利使用vec来输出打印。&/p&&p&引用非常方便我们使用,但是如果滥用的话,会引起安全问题,比如悬垂指针。看下面示例:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&
let a = 1;
println!(&{}&, r);
&/code&&/pre&&/div&&p&上面代码中,当a离开作用域的时候会被释放,但此时r还持有一个a的借用,编译器中的借用检查器就会告诉你:`a` does not live long
enough。翻译过来就是:`a`活的不够久。这代表着a的生命周期太短,而无法借用给r,否则&a就指向了一个曾经存在但现在已不再存在的对象,这就是悬垂指针,也有人将其称为野指针。&/p&&h2&生命周期&/h2&&p&上面的示例中,是在同一个函数作用域下,编译器可以识别出生命周期的问题,但是当我们在函数之间传递引用的时候,编译器就很难自动识别出这些问题了,所以Rust要求我们为这些引用显式的指定生命周期标记,如果你不指定生命周期标记,那么编译器将会“鞭策”你。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&struct Foo {
fn main() {
let y = &5;
let f = Foo { x: y };
println!(&{}&, f.x);
&/code&&/pre&&/div&&p&上面这段代码,编译器会提示你:missing
lifetime specifier。这是因为,y这个借用被传递到了 let f = Foo { x: y }所在作用域中。所以需要确保借用y活得比Foo结构体实例长才行,否则,如果借用y被提前释放,Foo结构体实例就会造成悬垂指针了。所以我们需要为其增加生命周期标记:
&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&struct Foo&'a& {
x: &'a i32,
fn main() {
let y = &5;
let f = Foo { x: y };
println!(&{}&, f.x);
&/code&&/pre&&/div&&p&加上生命周期标记以后,编译器中的借用检查器就会帮助我们自动比对参数变量的作用域长度,从而确保内存安全。&/p&&p&再来看一个例子:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&fn longest&'a&(x: &'a str, y: &'a str) -& &'a str {
if x.len() & y.len() {
fn main() {
let a = &hello&;
let b = String::from(&world&);
result = longest(a, b.as_str());
println!(&The longest string is {}&, result);
&/code&&/pre&&/div&&p&此段代码,编译器会报错:`b` does not live
long enough。这是因为result在外部作用域定义的,result的生命周期是和main函数一样长的,也就是说,在main函数作用域结束之前,result都必须存活。而此时,变量b在花括号定义的作用域中,出了作用域b就会被释放。而根据longest函数签名中的生命周期标注,参数b的生命周期必须和返回值的生命周期一致,所以,借用检查器果断的判断出`b` does not live long enough。&/p&&p&“显式的指定”,这是Rust的设计哲学之一。这对于新手,尤其是习惯了动态语言的人来说,可能是一个心智负担。显式的指定方便了编译器,但是对于程序员来说略显繁琐。不过为了安全考虑,我们就欣然接受这套规则吧。&/p&
本文试图从语义角度来解释Rust所有权的概念,以便帮助降低Rust的学习曲线。编程语言的内存管理,大概可以分为自动和手动两种。自动管理就是用GC(垃圾回收)来自动管理内存,像Java、Ruby、Golang、Elixir等语言都依赖于GC。而C/C++却是依赖于手工管理内存…
&p&有好文章链接推荐请联系我,rust qq群网名 成都-枪炮&/p&&p&&a href=&/rust-lang& class=&internal&&&span class=&invisible&&https://&/span&&span class=&visible&&/rust&/span&&span class=&invisible&&-lang&/span&&span class=&ellipsis&&&/span&&/a&
Rust编程 神喵的《深入浅出rust》文章,还有微信公众号&/p&&p&&a href=&/people/crlf0710/columns& class=&internal&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/people/crlf07&/span&&span class=&invisible&&10/columns&/span&&span class=&ellipsis&&&/span&&/a& 学一点Rust又不会怀孕&/p&&p&&a href=&/p/& class=&internal&&Rust 环境配置事项一览 - 知乎专栏&/a&
强烈推荐---安装环境必看&/p&&p&&a href=&/p/& class=&internal&&Rust所有权语义模型 - 知乎专栏&/a& &/p&&p&&a href=&/?target=https%3A///rustcc/RustPrimer& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&rustcc/RustPrimer&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///book/rustcc/rustprimer/details& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RustPrimer · GitBook&i class=&icon-external&&&/i&&/a& rust社区各位大佬的rust中文入门书&br&以上新人必看&/p&&p&&a href=&/p/?utm_source=qq&utm_medium=social& class=&internal&&/p/?utm_source=qq&utm_medium=social&/a& 【新手向】从零开始配置Windows下Rust开发环境图解 (没有上面的那遍讲得详细,适合快速安装参考)&/p&&p&------------------------------------------------------------------------------&/p&&p&&a href=&/?target=https%3A///Matrix-Zhang/tokio_kcp& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Matrix-Zhang&/span&&span class=&invisible&&/tokio_kcp&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& kcp的tokio实现 作者是群网友限量版&/p&&p&&a href=&/?target=https%3A///hinaria/simplist/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/hinaria/simp&/span&&span class=&invisible&&list/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &a href=&/?target=https%3A//docs.rs/simplist/0.0.4/simplist/%23simplist-plain-and-simple-http& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&simplist: plain and simple http.&i class=&icon-external&&&/i&&/a&基于tokio&/p&&p&&a href=&/?target=https%3A//carlomilanesi.gitbooks.io/rust-programming-step-by-step/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&carlomilanesi.gitbooks.io&/span&&span class=&invisible&&/rust-programming-step-by-step/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& rust编程电子书 推荐&/p&&p&&a href=&/?target=https%3A//kaisery.github.io/trpl-zh-cn/ch01-00-introduction.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&kaisery.github.io/trpl-&/span&&span class=&invisible&&zh-cn/ch01-00-introduction.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 官方book 第二版中文版&/p&&p&&a href=&/?target=http%3A//zsiciarz.github.io/24daysofrust& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&zsiciarz.github.io/24da&/span&&span class=&invisible&&ysofrust&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&/ 24天系列&/p&&p&&a href=&/?target=http%3A//siciarz.net/24-days-of-rust-hyper& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&siciarz.net/24-days-of-&/span&&span class=&invisible&&rust-hyper&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&/ 24天成为rust大神系列文章,文章最下面有其他相关文章&/p&&p&&a href=&/?target=https%3A//danielkeep.github.io/itercheat_baked.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&danielkeep.github.io/it&/span&&span class=&invisible&&ercheat_baked.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&&a href=&/?target=https%3A///DanielKeep/DanielKeep.github.io& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/DanielKeep/D&/span&&span class=&invisible&&anielKeep.github.io&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///rustomax/rust-iterators& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/rustomax/rus&/span&&span class=&invisible&&t-iterators&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&迭代器例子&/p&&p&&a href=&/?target=https%3A//blog.guillaume-gomez.fr/articles/%2BRust%2Basynchronous%2BHTTP%2Bserver%2Bwith%2Btokio%2Band%2Bhyper& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&blog.guillaume-gomez.fr&/span&&span class=&invisible&&/articles/+Rust+asynchronous+HTTP+server+with+tokio+and+hyper&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& tokio_hyper示例&/p&&p&&a href=&/?target=https%3A///Amanieu/atomic-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Amanieu/atom&/span&&span class=&invisible&&ic-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 扩充官方库atomic更方便 选择不同版本的&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///questions//cross-compile-rust-openssl-for-raspberry-pi-2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/quest&/span&&span class=&invisible&&ions//cross-compile-rust-openssl-for-raspberry-pi-2&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 交叉编译openssl-sys&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A//danielkeep.github.io/practical-intro-to-macros.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&danielkeep.github.io/pr&/span&&span class=&invisible&&actical-intro-to-macros.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 宏示例&/p&&p&&a href=&/?target=http%3A////effectively-using-iterators-in-rust.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/2015/0&/span&&span class=&invisible&&6/22/effectively-using-iterators-in-rust.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 经典iter示例&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///flosse/rust-web-framework-comparison& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/flosse/rust-&/span&&span class=&invisible&&web-framework-comparison&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
rust web框架集合&/p&&p&&a href=&/?target=https%3A///pyros2097/rust-embed& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/pyros2097/ru&/span&&span class=&invisible&&st-embed&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& Generates rust code to embed resource files into your rust executable类似go的bindata在可执行文件中加入资源 &/p&&p&&a href=&/?target=https%3A///tilpner/includedir/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/tilpner/incl&/span&&span class=&invisible&&udedir/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 另一个嵌入资源的库&/p&&p&&a href=&/?target=https%3A//hoverbear.org//the-future-with-futures& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&hoverbear.org/&/span&&span class=&invisible&&1/the-future-with-futures&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&/
&a href=&/?target=https%3A//hoverbear.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Future with Futures&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///goandylok/arraydeque/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/goandylok/ar&/span&&span class=&invisible&&raydeque/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 里面有值得学习的iter等各种处理&/p&&p&&a href=&/?target=https%3A//hoverbear.org//the-path-to-rust-on-the-web/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&hoverbear.org/&/span&&span class=&invisible&&6/the-path-to-rust-on-the-web/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& javascript调用rust&/p&&p&&a href=&/?target=https%3A///editor-rs/vscode-rust& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/editor-rs/vs&/span&&span class=&invisible&&code-rust&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& vscode的rust设置,支持rls&/p&&p&&a href=&/?target=https%3A///editor-rs/vscode-rust/blob/master/doc/rls_mode/main.md& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/editor-rs/vs&/span&&span class=&invisible&&code-rust/blob/master/doc/rls_mode/main.md&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 使用rls的模式&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A//daseinphaos.github.io/tlborm-chinese/book/README.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&daseinphaos.github.io/t&/span&&span class=&invisible&&lborm-chinese/book/README.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
Rust宏小册 中文版&/p&&p&&a href=&/?target=http%3A//relm.ml/relm-intro& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&relm.ml/relm-intro&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& Relm, a GUI library, based on GTK+ and futures, written in Rust&/p&&p&&a href=&/?target=https%3A///mbr/socketcan-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/mbr/socketca&/span&&span class=&invisible&&n-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& socketcan rust库&/p&&p&&a href=&/?target=http%3A//blog.burntsushi.net/rust-error-handling& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.burntsushi.net/rus&/span&&span class=&invisible&&t-error-handling&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& Error Handling in Rust&/p&&p&&a href=&/?target=https%3A//doc.rust-lang.org/stable/book/error-handling.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&doc.rust-lang.org/stabl&/span&&span class=&invisible&&e/book/error-handling.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///steveklabnik/rustbook& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/steveklabnik&/span&&span class=&invisible&&/rustbook&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 使用rustbook生成电子书&/p&&p&&a href=&/?target=https%3A///rust-unofficial/too-many-lists& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/rust-unoffic&/span&&span class=&invisible&&ial/too-many-lists&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 链表仓库&/p&&p&&a href=&/?target=http%3A//cglab.ca/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&cglab.ca/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&~abeinges/blah/too-many-lists/book/ rust实现链表&/p&&p&&a href=&/?target=https%3A//wayslog.gitbooks.io/rustprimer/content/cargo-projects-manager/cargo-projects-manager.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&wayslog.gitbooks.io/rus&/span&&span class=&invisible&&tprimer/content/cargo-projects-manager/cargo-projects-manager.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& rust_primer阅读地址&/p&&p&&a href=&/?target=https%3A//media.ccc.de/c/rustmcb& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&media.ccc.de/c/rustmcb&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& rust相关视频&/p&&p&&a href=&/?target=http%3A///building-scalable-mysql-proxy-rust/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/building-s&/span&&span class=&invisible&&calable-mysql-proxy-rust/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 这个讲了怎么使用tokio,和future编程&/p&&p&&a href=&/?target=https%3A///anjuke/zguide-cn& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/anjuke/zguid&/span&&span class=&invisible&&e-cn&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& ZMQ 指南&/p&&p&&a href=&/?target=http%3A///articles/vQN7Njf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/articles/vQ&/span&&span class=&invisible&&N7Njf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& Rust语言入门、关键技术与实战经验&/p&&p&&a href=&/?target=http%3A//q.com/cn/news/2014/08/zeromq-not-first-choice& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/cn/news/2014/&/span&&span class=&invisible&&08/zeromq-not-first-choice&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 为什么ZeroMQ不应该成为你的第一选择&/p&&p&&a href=&/?target=http%3A///%3Fp%3D334& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/?&/span&&span class=&invisible&&p=334&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &b&C/C++使用ZeroMQ的Router/Dealer模式搭建高性能后台服务框架&/b&&/p&&p&&a href=&/?target=http%3A//nanomsg.org/documentation.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&nanomsg.org/documentati&/span&&span class=&invisible&&on.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& nanomsg梆定库&/p&&p&&a href=&/?target=https%3A///thehydroimpulse/nanomsg.rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/thehydroimpu&/span&&span class=&invisible&&lse/nanomsg.rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 类似ZeroMQ的更轻量MQ库&/p&&p&&a href=&/?target=http%3A//cglab.ca/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&cglab.ca/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&~abeinges/blah/too-many-lists/book/README.html 一本rust讲解数据结构的书&/p&&p&&a href=&/?target=http%3A//json.rs/doc/json/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&json.rs/doc/json/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 一个json库&/p&&p&&a href=&/?target=http%3A////move-clone-copy.html%3Fhmsr%3Dtoutiao.io%26utm_medium%3Dtoutiao.io%26utm_source%3Dtoutiao.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&//move-clone-copy.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io&i class=&icon-external&&&/i&&/a& 关于move等教程 手写绘图讲解&/p&&p&&a href=&/?target=https%3A///wjakob/nanogui& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/wjakob/nanog&/span&&span class=&invisible&&ui&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& c++11实现的UI&/p&&p&&a href=&/?target=https%3A///Oipo/nanogui-rust-sdl& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Oipo/nanogui&/span&&span class=&invisible&&-rust-sdl&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& nanogui的rust梆定&/p&&p&&a href=&/?target=http%3A//aturon.github.io/blog//futures-design/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&aturon.github.io/blog/2&/span&&span class=&invisible&&016/09/07/futures-design/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &b&Designing futures for Rust&/b&&/p&&p&&a href=&/?target=http%3A///p/af6b550fc385& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/p/af6b550fc&/span&&span class=&invisible&&385&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& google的多语言构建工具&/p&&p&&a href=&/?target=https%3A///dikaiosune/rust-dashboard& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/dikaiosune/r&/span&&span class=&invisible&&ust-dashboard&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 一个不错的生成面板的项目&/p&&p&&a href=&/?target=http%3A//pramode.in//on-teaching-rust-to-beginners/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&pramode.in//o&/span&&span class=&invisible&&n-teaching-rust-to-beginners/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 新手教程&/p&&p&&a href=&/?target=http%3A//covertness.me//Rust%25E5%25AD%25A6%25E4%25B9%25A0%25E8%25AE%25B0%25E5%25BD%%E2%E5%25BC%%25AD%25A5IO%25E4%25B8%258E%25E9%25AB%%25B9%25B6%25E5%258F%2591/%23more& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&covertness.me/&/span&&span class=&invisible&&8/Rust%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E2%80%94%E2%80%94%E5%BC%82%E6%AD%A5IO%E4%B8%8E%E9%AB%98%E5%B9%B6%E5%8F%91/#more&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
Rust学习记录——异步IO与高并发&/p&&p&&a href=&/?target=http%3A//www.dartlang.cc/docs/dart-up-and-running/contents/ch03.html%23ch03-futures& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&dartlang.cc/docs/dart-u&/span&&span class=&invisible&&p-and-running/contents/ch03.html#ch03-futures&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& futures的dark参考&/p&&p&&a href=&/?target=https%3A//en.wikipedia.org/wiki/Constrained_Application_Protocol& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&en.wikipedia.org/wiki/C&/span&&span class=&invisible&&onstrained_Application_Protocol&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& CoAP的wiki里面有 CoAP-rs&/p&&p&&a href=&/?target=https%3A//pnkfelix.github.io/presentations/qcon-london2016-deploy/qcon-london2016.html%23/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&pnkfelix.github.io/pres&/span&&span class=&invisible&&entations/qcon-london2016-deploy/qcon-london2016.html#/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& rust的PPT,图形化 按空格键翻页&/p&&p&&a href=&/?target=https%3A///bluss/rust-itertools& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/bluss/rust-i&/span&&span class=&invisible&&tertools&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& iter参考代码&/p&&p&&a href=&/?target=https%3A///kteza1%3Ftab%3Drepositories& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/kteza1?&/span&&span class=&invisible&&tab=repositories&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 有rust和go的相关嵌入式仓库&/p&&p&&a href=&/?target=https%3A///Ather-Energy/RuMqtt& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Ather-Energy&/span&&span class=&invisible&&/RuMqtt&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& rust mqtt&/p&&p&&a href=&/?target=https%3A///aturon/crossbeam& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/aturon/cross&/span&&span class=&invisible&&beam&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 并行库支持消息队列&/p&&p&&a href=&/?target=http%3A//aturon.github.io/blog//futures/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&aturon.github.io/blog/2&/span&&span class=&invisible&&016/08/11/futures/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&&a href=&/?target=https%3A///alexcrichton/futures-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/alexcrichton&/span&&span class=&invisible&&/futures-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
rust下的futures-rs异步库&/p&&p&&a href=&/?target=https%3A///tokio-rs/tokio-core& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/tokio-rs/tok&/span&&span class=&invisible&&io-core&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 新的future 异步库&/p&&p&&a href=&/?target=https%3A///colin-kiegel/rust-derive-builder& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/colin-kiegel&/span&&span class=&invisible&&/rust-derive-builder&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &u&&b&很强大的自定义derive库&/b&&/u&&/p&&p&&a href=&/?target=http%3A//benchmarksgame.alioth.debian.org/u64q/compare.php%3Flang%3Drust%26lang2%3Dgpp& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=rust&lang2=gpp&i class=&icon-external&&&/i&&/a& rust与其他语言的性能比较,最下部位置可选跟其他语言的比较&/p&&p&&a href=&/?target=http%3A//www.tockos.org/blog/2016/dynamic-loading/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&tockos.org/blog/2016/dy&/span&&span class=&invisible&&namic-loading/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 一个安全的rust实现的rtos MCU&/p&&p&&a href=&/?target=https%3A///tokio-rs/tokio-minihttp& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/tokio-rs/tok&/span&&span class=&invisible&&io-minihttp&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 重要tokio库&/p&&p&&a href=&/?target=https%3A///tokio-rs/tokio& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/tokio-rs/tok&/span&&span class=&invisible&&io&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///dpc/slog-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/dpc/slog-rs&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& Mike推荐的一个log库&/p&&p&&a href=&/?target=https%3A///atilaneves/mqtt_rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/atilaneves/m&/span&&span class=&invisible&&qtt_rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& MQTT broker in Rust&/p&&p&&a href=&/?target=https%3A///japaric/rust-cross& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/japaric/rust&/span&&span class=&invisible&&-cross&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 交叉工具链&/p&&p&&a href=&/?target=https%3A///sunng87/cargo-release& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/sunng87/carg&/span&&span class=&invisible&&o-release&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 一个关于buildroot支持rust的BLOG,推荐&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///elebihan/buildroot& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/elebihan/bui&/span&&span class=&invisible&&ldroot&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 支持rust的buildroot,需要切换分支&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A///posts/how-to-add-a-buildroot-package-for-a-cargo-crate.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/posts/how-&/span&&span class=&invisible&&to-add-a-buildroot-package-for-a-cargo-crate.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 如何添加一个pkg包for rust&/p&&p&&a href=&/?target=https%3A///nagisa/rust_libloading& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/nagisa/rust_&/span&&span class=&invisible&&libloading&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 共享库so&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///passcod/rsnotify& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/passcod/rsno&/span&&span class=&invisible&&tify&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 文件通知&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///passcod/rsnotify/blob/master/Cargo.toml& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/passcod/rsno&/span&&span class=&invisible&&tify/blob/master/Cargo.toml&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 可参考跨平台配置&/p&&p&&a href=&/?target=https%3A///emoon/dynamic_reload& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/emoon/dynami&/span&&span class=&invisible&&c_reload&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 动态库加载实现插件plugin&/p&&p&&a href=&/?target=https%3A///carllerche/eventual& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/carllerche/e&/span&&span class=&invisible&&ventual&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& future库&/p&&p&&a href=&/?target=https%3A///alexcrichton/futures-rs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/alexcrichton/futures-rs &i class=&icon-external&&&/i&&/a&&a href=&/?target=https%3A///alexcrichton/futures-rs& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Alex 在基于 MIO 写 futures&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A//crates.io/crates/maplit& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&crates.io/crates/maplit&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& Macros for container literals with specific type.容器宏&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A///questions//how-do-i-create-a-hashmap-literal& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&/questions//how-do-i-create-a-hashmap-literal
HashMap的宏&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///lilydjwg/chinese-num& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/lilydjwg/chi&/span&&span class=&invisible&&nese-num&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 依云的中文数字&/p&&p&&a href=&/?target=https%3A///BurntSushi/rust-memchr& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/BurntSushi/r&/span&&span class=&invisible&&ust-memchr&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 内存比较函数&/p&&p&&a href=&/?target=https%3A///alexcrichton/toml-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/alexcrichton&/span&&span class=&invisible&&/toml-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///Amanieu/thread_local-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Amanieu/thre&/span&&span class=&invisible&&ad_local-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A////creating-a-multi-echo-server-using-rust-and-mio.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&//creating-a-multi-ec&i class=&icon-external&&&/i&&/a&&a href=&/?target=http%3A////creating-a-multi-echo-server-using-rust-and-mio.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ho-server-using-rust-and-mio.html&i class=&icon-external&&&/i&&/a& mio服务器 &b&letmut&/b&recv_buf=&b&ByteBuf&/b&::mut_with_capacity(2048);&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&/hjr3/mob
&/code&&/pre&&/div&&p&&a href=&/?target=https%3A///hjr3/mob/blob/multi-echo-blog-post/src/main.rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/hjr3/mob/blo&/span&&span class=&invisible&&b/multi-echo-blog-post/src/main.rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///hjr3/mob/blob/state-blog-post/src/connection.rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/hjr3/mob/blo&/span&&span class=&invisible&&b/state-blog-post/src/connection.rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
mio工程示例&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///PeterReid/schedule_recv& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/PeterReid/sc&/span&&span class=&invisible&&hedule_recv&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& rust实现的定时器&/p&&p&&a href=&/?target=http%3A//q.com/cn/articles/anniversary-of-the-release-of-rust-1%3Futm_source%3Dtuicool%26utm_medium%3Dreferral& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&q.com/cn/articles/anniversary-of-the-release-of-rust-1?utm_source=tuicool&utm_medium=referral&i class=&icon-external&&&/i&&/a& Rust 1.0发布一周年,发展回顾与总结&/p&&p&&a href=&/?target=http%3A//doc.crates.io/manifest.html%23the-features-section& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&doc.crates.io/manifest.&/span&&span class=&invisible&&html#the-features-section&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 深入讲解#[cfg(features=&foo&)]&/p&&p&&a href=&/?target=https%3A///mmstick/cargo-deb& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/mmstick/carg&/span&&span class=&invisible&&o-deb&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 自动打包成debian的deb包&/p&&p&&a href=&/?target=https%3A//killercup.github.io/trpl-ebook/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&killercup.github.io/trp&/span&&span class=&invisible&&l-ebook/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &a href=&/?target=https%3A///killercup/trpl-ebook& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/killercup/tr&/span&&span class=&invisible&&pl-ebook&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&h2&'The Rust Programming Language' E-Books 其中有 &a href=&/?target=https%3A//killercup.github.io/trpl-ebook/nomicon-.epub& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NOMICON EPUB&i class=&icon-external&&&/i&&/a&&/h2&&p&&br&&/p&&p&&a href=&/?target=https%3A///rust-lang-nursery/log& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/rust-lang-nu&/span&&span class=&invisible&&rsery/log&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& env_logger LOG输出&/p&&p&&a href=&/?target=https%3A///kbknapp/clap-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/kbknapp/clap&/span&&span class=&invisible&&-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &b&命令行参数解析&/b&&/p&&p&&a href=&/?target=https%3A//hoverbear.org//a-journey-into-iterators/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&hoverbear.org/&/span&&span class=&invisible&&2/a-journey-into-iterators/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 迭代器好文章 &/p&&p&&a href=&/?target=http%3A//xion.io/post/code/rust-patterns-ref.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&xion.io/post/code/rust-&/span&&span class=&invisible&&patterns-ref.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &b&& vs. ref in Rust patterns&/b&&/p&&p&&a href=&/?target=https%3A///reem/rust-typemap/blob/master/src/lib.rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/reem/rust-ty&/span&&span class=&invisible&&pemap/blob/master/src/lib.rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 实现了typemap的Key&/p&&p&&a href=&/?target=https%3A///reem/rust-traitobject& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/reem/rust-tr&/span&&span class=&invisible&&aitobject&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&/?target=https%3A///reem/rust-unsafe-any& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/reem/rust-un&/span&&span class=&invisible&&safe-any&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& &/p&&p&&a href=&/?target=https%3A///reem/rust-typemap/blob/master/src/lib.rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/reem/rust-ty&/span&&span class=&invisible&&pemap/blob/master/src/lib.rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A///questions//how-to-implement-iterator-and-intoiterator-for-a-simple-struct& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/quest&/span&&span class=&invisible&&ions//how-to-implement-iterator-and-intoiterator-for-a-simple-struct&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 迭代器示例&/p&&p&&br&&/p&&p&&br&&/p&&p&&a href=&/?target=http%3A//www.pscheidl.cz/index.php& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&pscheidl.cz/index.php&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&/blog/5-iterator-traits-in-rust-iter-intoiter-and-fromiter 迭代器文章&/p&&p&&a href=&/?target=https%3A///sappworks/sporm& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/sappworks/sp&/span&&span class=&invisible&&orm&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& mike推荐的orm&/p&&p&&br&&/p&&p&&a href=&/?target=https%3A///Keats/tera& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/Keats/tera&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& rust的template&/p&&p&&a href=&/?target=https%3A//blog.wearewizards.io/introducing-tera-a-template-engine-in-rust& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&blog.wearewizards.io/in&/span&&span class=&invisible&&troducing-tera-a-template-engine-in-rust&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& Introducing Tera, a template engine in Rust&/p&&p&&a href=&/?target=http%3A//jinja.pocoo.org/docs/dev/templates/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&jinja.pocoo.org/docs/de&/span&&span class=&invisible&&v/templates/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& tera参考jinja2的模板语法&/p&&p&&a href=&/?target=http%3A//blog.csdn.net/varding/article/category/5579939& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.csdn.net/varding/a&/span&&span class=&invisible&&rticle/category/5579939&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 不错的rust BLOG&/p&&p&&a href=&/?target=http%3A//lib.csdn.net/base/3& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&lib.csdn.net/base/3&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& rust知识库&/p&&p&&a href=&/?target=https%3A///zBaitu/rfmt& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/zBaitu/rfmt&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 比rustfmt更好的格式化工具&/p&&p&&a href=&/?target=https%3A//crates.io/crates/byteorder& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&crates.io/crates/byteor&/span&&span class=&invisible&&der&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
字节方式操作buffer库 支持大小端&/p&&p&&a href=&/?target=https%3A///loveisasea/danceparty-rust& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/loveisasea/d&/span&&span class=&invisible&&anceparty-rust&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 跳舞者的代示例展示多线程&/p&&p&&a href=&/?target=https%3A///rust-lang-nursery/rustup.rs/blob/master/README.md& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/rust-lang-nu&/span&&span class=&invisible&&rsery/rustup.rs/blob/master/README.md&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 更新rust 工具链的方法&/p&&p&&a href=&/?target=https%3A///hirschenberger/modbus-rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/hirschenberg&/span&&span class=&invisible&&er/modbus-rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& modbus库&/p&&p&&a href=&/?target=https%3A///jdavis/rust-design-patterns/blob/master/patterns/adapter.rs& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/jdavis/rust-&/span&&span class=&invisible&&design-patterns/blob/master/patterns/adapter.rs&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& 基于rust的设计模式&/p&&p&&a href=&/?target=https%3A///KaiserY& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/KaiserY&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& &b&官方中文文档翻译&/b&&/p&&p&&a href=&/?target=http%3A//rust.cc/t/rustde-lifetimede-zuo-yong/712/7& class=& externa}

我要回帖

更多关于 rust什么游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信