坑爹哥解说rust腐蚀为什么老实说禁止用户名长度

Rust Coled的喜欢 | LOFTER(乐乎)
LOFTER for ipad —— 记录生活,发现同好
Rust Coled 的喜欢
{list photos as photo}
{if photo_index==0}{break}{/if}
品牌${make||'-'}
型号${model||'-'}
焦距${focalLength||'-'}
光圈${apertureValue||'-'}
快门速度${exposureTime||'-'}
ISO${isoSpeedRatings||'-'}
曝光补偿${exposureBiasValue||'-'}
镜头${lens||'-'}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post_index < 3}
{if post.type == 1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if data.msgRank == 1}{/if}
{if data.askSetting == 1}{/if}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
this.p={ dwrMethod:'queryLikePosts',fpost:'1b7d42_5021000',userId:4822585,blogListLength:30};Rust Coled的喜欢 | LOFTER(乐乎)
LOFTER for ipad —— 记录生活,发现同好
Rust Coled 的喜欢
{list photos as photo}
{if photo_index==0}{break}{/if}
品牌${make||'-'}
型号${model||'-'}
焦距${focalLength||'-'}
光圈${apertureValue||'-'}
快门速度${exposureTime||'-'}
ISO${isoSpeedRatings||'-'}
曝光补偿${exposureBiasValue||'-'}
镜头${lens||'-'}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post_index < 3}
{if post.type == 1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if data.msgRank == 1}{/if}
{if data.askSetting == 1}{/if}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
this.p={ dwrMethod:'queryLikePosts',fpost:'1b6baf_565bb5c',userId:4822585,blogListLength:30};&#149;&文档编号:DOC
&#149;&发布时间:
AnyOffice移动办公解决方案的常见问题解答
常见问题解答,FAQ
阅读次数:3034
下载次数:693
如果部分内容无法正常浏览,请单击右上角的下载
将文档下载到本地查看。从 rust 0.1 版本开始关注,说几句。&br&&br&1、rust 的开发推进非常有节奏,说每三个月发布一个版本,基本上都非常准时地做到了,road map 里定好的东西,都按时按质按量出现了,体现了良好的工程管理;从这一点上,这几年出现的新语言鲜有管理得这么好的,有充分的理由让大家相信 rust 的前景:一切都会有的。&br&2、rust 原是一个 servo 的子项目,它的发展是 servo 推进的,而新的特性也第一时间用在了 servo 的开发上,它们相互依存、相辅相成。可以说,rust 推出时,已经经受了一个巨大的、复杂的工程考验,而 servo 推出出,也意味着 rust 真正可用。这个意义在于用户不是小白鼠,目前没有其它新语言的东家是“如此有诚意”的。随着三星的加入,大量三星员工已经提交许多代码,未来的 rust 会在发布之前就经受过更多的商用大项目考验,工程成熟度会非常高。&br&3、rust 定位非常明确,所以在 0.1 版本出来的时候,内存模型、并发模型、网络库(使用libuv)、类型推断、自举、编译(编译到 llvm,而不是直接生成机器码),这几个现代工程语言最重要的东西都已经定了下来,而且选择的都是最佳方案。相对地,另一个号称并发的新语言做好这些都不知道是第几个大版本了,而多核支持现在还是个笑话。&br&4、rust 没有想着跟别的新语言竞争,它的目标是 c++,所以它的许多特性都搔到了 c++ 程序员的痒处,比如自动类型推断、内置高级数据类型、函数式编程、泛型编程等等,除了指针类型有点多,让 c++ 程序员觉得比 c++ 还复杂外,其它都是一眼望去就是“业界最佳解决方案”。&br&5、rust 的进化一直非常大胆,几乎每一个版本出来都是不兼容之前的版本的,而且有些东西之前觉得很棒的(比如 typestate),一旦发现有更好的方案,就马上采用,这样它的进化非常快速,如果不是一直在跟,过上半年(两个版本),就会觉得“哇,好大变化!”。当然,这一点也让人觉得它长期不向“成熟”收敛,其实这是一种错觉,rust 采用的每一个新特性都很快稳定下来了,真正关心它的人都会认同这一点。&br&6、得益于 rust 优秀的并发模型,在软实时系统上有着卓越的表现,rust 已经受到原来的最忠实的一群 c++ 用户的关注、喜爱和追捧,这群人就是 game developers,这些开发主机游戏的家伙,极端注重性能,所以长期在沉浸在 c++ 之中,但接触到 rust 后,已经有许多人开始尝试使用 rust 开发游戏,而且也反馈、贡献了许多东西给 rust 开发团队。&br&7、rust 有一些不符合我的审美观的东西,比如很多缩写,比如很多符号,但考虑到我自己没有出力改变这个状况,就接受吧;当然,也有人看不惯它的其它特性,然后就喷,这很正常。
从 rust 0.1 版本开始关注,说几句。1、rust 的开发推进非常有节奏,说每三个月发布一个版本,基本上都非常准时地做到了,road map 里定好的东西,都按时按质按量出现了,体现了良好的工程管理;从这一点上,这几年出现的新语言鲜有管理得这么好的,有充分…
答案是改成 &a class=& wrap external& href=&http://www.rust-lang.org/& target=&_blank& rel=&nofollow noreferrer&&Rust&i class=&icon-external&&&/i&&/a& 那个样子!楼上诸位大大说的 Rust 基本都有。&br&(&b&Beta 版已出&/b&,不用再担心不稳定了,已经适合群众学习了,遂丧心病狂开始安利。)&br&&br&&a data-title=&@vczh& data-editable=&true& class=&member_mention& href=&/people/ecc0ec035f& data-hash=&ecc0ec035f& data-tip=&p$b$ecc0ec035f&&@vczh&/a& 说的“能链接C语言的符号”,没问题,而且还能在 unsafe 里面写类似 C 的代码(raw pointer,malloc)。而且可以有和 C 相同的内存布局可以进行直接数据交换,非常简单!在结构体的定义上面加个 #[repr(C)] 就行。后门也是 unsafe 代码块。&br&&br&&a data-title=&@Milo Yip& data-editable=&true& class=&member_mention& href=&/people/1e2cccc3ce33& data-hash=&1e2cccc3ce33& data-tip=&p$b$1e2cccc3ce33&&@Milo Yip&/a& 说的模块系统自然也有,而且同时有&a class=& wrap external& href=&https://crates.io/& target=&_blank& rel=&nofollow noreferrer&&现代化的包管理器&i class=&icon-external&&&/i&&/a&,依赖测试和 Build 一站式服务。&br&&br&&a data-title=&@邵成& data-editable=&true& class=&member_mention& href=&/people/2d8f51b98& data-hash=&2d8f51b98& data-tip=&p$b$2d8f51b98&&@邵成&/a& 说的 Concepts 系统竟然也有,这里是 Trait 系统,链接说的的 Standard Haskell Classes 除了 Monad 和 Functor 都有。&br&&br&-----&br&&br&C++ 正在学所以不是特别清楚。大大们发了新答案我再跟进。&br&&br&对于增加的特性,&u&静态指针生命期&/u&分析是招牌(这东西写起来蛮难,但是编译期虐你总比运行期虐你要好),还有让人垂涎欲滴的&u&代数数据类型&/u&和&u&模式匹配&/u&。最重要的是,不像 C++ 有自身 C 的包袱,Rust 的&u&类型安全&/u&能得到很好的保证。&br&&br&删减的特性,最大的就是取消了继承,所以 OOP 的那一堆概念和特性就没了。什么构造函数析构函数虚函数友元函数,bye。这里有人会不习惯,但是请放心,&u&Trait&/u& (Concepts)系统不是吃素的,更优雅简单。同样的,让人神经衰弱的异常系统也用基于代数数据类型的更优雅的方法取代了。&br&&br&另外 Rust 的&u&泛型&/u&更严格(弱?),尖括号里面现在只能放类型,所以模版元编程还不能 cover ,类型系统没到 C++ 的地步。不过元编程能力依然非常强大,不光有很好的宏还有编译器插件这个不明觉厉的东西。另外配合 Trait 系统,泛型也能做到鸭子类型哟。&br&&br&对了,相比 C++ ,编译错误的提示简直良心到不可思议,特别是泛型。&br&&br&至于为什么是 Rust,而不是 Haskell、C# 之类的语言,相比别的语言,Rust 希望吸引更多 C++ 程序员,所以坚守着很多 C++
的关键特性,比如说&u&没有 GC&/u&,&u&极小的运行时&/u&,比如说&u&零开销的抽象&/u&,比如说有沟通底层的能力(还可以&u&内联汇编&/u&!一个小伙伴知道了特别高兴,可以写游戏外挂了耶)。所以现在 Rust 已经吸引到很多原本用 C++ 的游戏开发者了。&br&&br&这里有一个别人写的
&a class=& wrap external& href=&/nrc/r4cppp& target=&_blank& rel=&nofollow noreferrer&&Rust for C++ Programmers&i class=&icon-external&&&/i&&/a&。&br&如果有兴趣学的话,双手奉上 &a class=& wrap external& href=&/& target=&_blank& rel=&nofollow noreferrer&&看例子学 Rust&i class=&icon-external&&&/i&&/a& 和 &a class=& wrap external& href=&http://doc.rust-lang.org/book/& target=&_blank& rel=&nofollow noreferrer&&Rust 之书&i class=&icon-external&&&/i&&/a& 。前者有翻译,但是我看有段时间没更新了:&a class=& wrap external& href=&http://rustcc.github.io/rust-by-example/& target=&_blank& rel=&nofollow noreferrer&&Introduction&i class=&icon-external&&&/i&&/a&。
答案是改成
那个样子!楼上诸位大大说的 Rust 基本都有。(Beta 版已出,不用再担心不稳定了,已经适合群众学习了,遂丧心病狂开始安利。) 说的“能链接C语言的符号”,没问题,而且还能在 unsafe 里面写类似 C 的代码(raw pointer,malloc)。…
&p&在 Rust 社区待了一段时间,我发现很多正在学习使用 Rust 的人都不喜欢所有权的概念。&/p&&p&如果一个政党的新人都是&b&叛徒&/b&,更可怕的是有些叛徒还是有能力的叛徒,我不禁对这个政党的未来感到担忧。&/p&&br&&p&我猜测未来 Rust 会分成三个阵营:&/p&&ol&&li&完全的 RAII,没有&b&垃圾收集,&/b&&/li&&li&没有 RAII,按线程分隔的&b&垃圾收集,&/b&&/li&&li&没有 RAII,跨线程&b&垃圾收集。&/b&&/li&&/ol&&p&这三个阵营中,Rust 语法、类型系统都是互相兼容的,它们用的是&b&阵营 1 编写的编译器&/b&。&/p&&p&差别在于,&/p&&ul&&li&阵营 1 在所有编码中都会遇到&b&所有权&/b&的概念,&/li&&li&阵营 2 在编写跨线程代码时才遇到&b&所有权&/b&的概念,&/li&&li&阵营 3 接触不到&b&所有权&/b&概念。&/li&&/ul&&br&&p&甚至于这些阵营还有变种:&/p&&ul&&li&2.1 分块的线程&b&内&/b&垃圾收集&/li&&li&3.1 分块的&b&跨&/b&线程垃圾收集&/li&&/ul&&br&&p&&b&在过去几年 Rust 差点直接发展成阵营 2 了&/b&,在去年下半年才纠正过来。&/p&&br&&p&只有曾经待过阵营 1 和 2 的人才有能力编写库支持阵营 3 的发展,阵营 1 和 2 的人不存在这个困难。但是不要怀疑这会不会发生,就像很多为 JavaScript 编写底层库的人都是 C++ 阵营叛逃过来的。&/p&&br&&p&垃圾收集,就像 C++ 的 shared_ptr 一样,一旦你决心完全引入它,那就几乎处处是它的身影,你没法安全地在一个小系统中避开它的影响(尽管它是非入侵式的)。&/p&&br&&p&因此,尽管三个阵营的代码是可以互通的,但是有以下结果:&/p&&ul&&li&阵营 1 的代码遇到其他阵营就归属到对方阵营;&/li&&li&阵营 2 的代码吸收阵营 1 的代码时,产生的结果是自己阵营的;遇到阵营 3 的代码时就变成阵营 3 的代码;&/li&&li&阵营 3 天然吸收其他阵营。&/li&&/ul&&br&&p&这个&b&分裂&/b&又会产生更深远的影响,&/p&&ul&&li&阵营 1 是吸引不了没有编程背景的新人的,因为他们不懂&b&内存安全&/b&是怎么回事。既然有阵营 2 和阵营 3 可以选,为什么要选阵营 1 ?阵营 1 吸引这些人:有些人习惯了垃圾收集,想看看如何&b&正确编写&/b&不依赖垃圾收集的代码;&/li&&li&阵营 2 和阵营 3 天然吸引新手。直接被阵营 3 吸引的新人看上去就像用上了带泛型的 Go。&/li&&/ul&&br&&p&&b&假如&/b&以上分裂真的发生了,我认为 Rust 社区要维持将会很艰难。有趣的是,这种现象看上去完全就像是 JavaScript/PHP 阵营在编写 C++ 代码这种困难的反面。&/p&&br&&p&上面讨论了没有编程背景的新手,以及垃圾收集阵营过来的人,再说点 C/C++ 程序员方面的。&/p&&p&我发现很多 C++ 程序员既不想编写安全的代码,也不想写 unsafe 块。他们想要让程序先通过编译,在程序崩溃的时候再调试。我不知道这样的话 Rust 的内存安全模型还有什么意义。&/p&&p&对于 C 程序员,他们不习惯 C++ 级别的抽象,所以我很怀疑他们能否理解为什么所有权检查能够解决内存安全的问题。&/p&
在 Rust 社区待了一段时间,我发现很多正在学习使用 Rust 的人都不喜欢所有权的概念。如果一个政党的新人都是叛徒,更可怕的是有些叛徒还是有能力的叛徒,我不禁对这个政党的未来感到担忧。我猜测未来 Rust 会分成三个阵营:完全的 RAII,没有垃圾收集,没…
1.&br&在并发模型上面,Rust是典型的Actor Model(AM),而Go则是Communicating Sequential Processes Model(CSP)。在语法上面Rust和Go非常类似,都是通过Channel来实现自己的模型,但是具体的行为却有些细微的差别。&br&&br&在AM里,每个进程都是一个独立的角色,每个角色拥有一个独属的命名邮箱。Actors之间通过&b&异步的&/b&往对方邮箱投递信息来进行通信。&br&&br&在CSP里,进程与进程之间通过一个管道来进行通信。消息可以顺序的填入这个管道,也可以被逐次的从管道取出。注意到这个管道并不归属于某个进程。传统上,CSP管道没有缓存,填入与取出是&b&同步的&/b&,由此也就保证了消息不会在通信的过程中丢失。Go额外的支持了带buffer的管道,用于提供与AM模型类似的异步通信。&br&&br&在模型的实现上,两者都实现了M:N的运行时协程Pre-emptive Scheduler。但由于Rust的目标领域是系统编程,所以运行时系统只作为可选择的基础库附带发行。在当前版本(0.11.0)下,默认进程与系统进程是1:1的。得益于Rust比较厉害的表意能力,可以非常容易的对其进行配置,且对于大部分功能程序的编码来讲是隐形的。&br&&br&2. &br&如果有人表达Rust的并发模型要优于Go的话,那么他多半想要提及下面的问题。&br&&ol&&li&Task是Fault-Isolation的、具有Identity的,而Go-Routine不是;&/li&&li&Go没有对状态共享(资源竞争)做出显式的编译期检查(&a href=&http://blog.golang.org/race-detector& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&blog.golang.org/race-de&/span&&span class=&invisible&&tector&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&),而Rust则做了相当多的努力(当然也带来了语法上的复杂);&/li&&li&Rust可以关闭运行时系统,而Go则伴随着Pause Garbage Collection等运行时问题;&/li&&/ol&总的来讲,Go更像Python,目标领域是快速开发,而Rust则更像C,目标领域是系统编程。我没有能力对上述的工程Tradeoff做出评价,大家可以自行判断。
1.在并发模型上面,Rust是典型的Actor Model(AM),而Go则是Communicating Sequential Processes Model(CSP)。在语法上面Rust和Go非常类似,都是通过Channel来实现自己的模型,但是具体的行为却有些细微的差别。在AM里,每个进程都是一个独立的角色,每个角…
利益相关:一年前就开始使用Go,Rust是从0.9-dev开始使用到现在0.13-dev。&br&&br&Go本质上与C没有太大的区别,它的Runtime实际上就是wrap了一下libc,然后在语法层面提供了各种语法糖。但是它写起来比C舒服多了,类型推导、多返回值、interface、GC等等的特性,会让有Python经验的人觉得异常的亲切。不过话说回来,Go和Python是没办法拿来比较的,在长期使用之后会更加发现出两者的不同。&br&&br&Rust目前还在dev阶段,据说年底beta,语法还在变动,下面所有的说法都基于0.13-dev。Rust如果与Go比较,可以类比成C++与C的比较(不严谨)。&br&1. Rust没有Runtime,所有的内存管理都在编译期完成。在Rust中比较突出的一个特性就是「Lifetime 生存期」,它就是编译器用来管理某个Object从构造到析构整个过程,因此在编译期就可以做到内存管理,避免开发者手动管理内存,也避免了内存泄露。虽然这种方法听起来觉得非常的完美,从0.9-dev到0.13-dev这段时期,生存期管理也变得更加智能和人性化,不过真的遇到编译器无法推测对象的生存期需要你手动去指定的时候,老实说对不熟悉的人来说也是非常的伤脑筋。&br&2. Rust对代码的安全性要求非常的高,从语法上规定了各种的约束(比如一个变量不能被borrow as mutable多于一次等),可以让编译器在编译时就帮你找出一些可能会出现Bug的点,然后编译失败逼你去把代码改成更安全的写法,编译器的要求可谓非常的严格,初学者基本就是每写一段代码就跪着问rustc到底对不对,和跪着问Google到底我为什么我写错了。在学Rust的这段时间里,Rust编译器纠正了我许多不好的编程习惯和教会了写代码要先全面地考虑(不然编译不过)。这种特性也让Rust实现了它宣传语中的那句话:prevents almost all crashes*, and eliminates data races&br&3. Rust写同样的一段程序跑得比Go要快,甚至有测试显示它的速度已经达到了Java的级别。(测试是在Hacker News上看到了,找到之后放上来)。&br&4. Rust编译目前远没有Go那么快。&br&5. Go有自带的goroutine,是轻量级的线程,而Rust在目前的版本已经从标准库移去了rustuv,默认使用Native thread来实现异步,使用起来和goroutine一样方便,相关的讨论可以在Hacker News上找到,&a href=&/item?id=6977177& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Rust standard library no longer has any scheduling baked into it&i class=&icon-external&&&/i&&/a&。两者都有builtin的channel用于实现同步。(备注:Rust从标准库中移去了rustuv不代表它不支持green thread,而是选择了把EventLoop的实现交给社区,标准库只做接口,&a href=&/rust-lang/rust/issues/4419& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Scheduler rewrite with I/O event loop · Issue #4419 · rust-lang/rust · GitHub&i class=&icon-external&&&/i&&/a&,默认标准库中的EventLoop不支持I/O)。&br&6. 讲到Rust不得不提它的Pattern matching,实在太过强大难以言表,请有兴趣的人去看一下Rust的文档相关的部分。据说源自Haskell。&br&&br&对比Go和Rust,我的选择是Rust。但是它们和Python都相差挺大,Python的使用经验在这两门语言中的可复用性不算太大。&br&最近用Rust写了一个shadowsocks-rust: &a href=&/zonyitoo/shadowsocks-rust& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&zonyitoo/shadowsocks-rust · GitHub&i class=&icon-external&&&/i&&/a&,欢迎喜欢的同学一起来交流。
利益相关:一年前就开始使用Go,Rust是从0.9-dev开始使用到现在0.13-dev。Go本质上与C没有太大的区别,它的Runtime实际上就是wrap了一下libc,然后在语法层面提供了各种语法糖。但是它写起来比C舒服多了,类型推导、多返回值、interface、GC等等的特性,会…
&p&我没有并行编程的经验,所以这里就说一些不涉及并行的内容。&/p&&br&&p&Rust 相比 Go 的优势:&/p&&ol&&li&Rust 可以做内联汇编,Go 不行(Rust 的 SIMD 库也在开发中,这种事情你不会用 Go 做)&/li&&li&Rust 有确定性析构,Go 没有,只能 whole-world-stop 做 GC&/li&&li&Rust 的接口(trait)可以静态派发,做 zero-cost abstraction,Go 不行,它的 interface 只能靠反射做动态派发&/li&&li&Rust 没有运行时,可以写操作系统(我估计至少需要几百行汇编做 bootstrap),Go 离这种能力很远&/li&&li&Rust 有一个更丰富的类型系统,表达能力更强,允许你做更高层次的抽象,写出泛用的库,这个是 Go 不具备的&/li&&li&Rust 有更强的语义,更容易捕获错误的逻辑,编译器直接检查出你代码中的不安全的部分&/li&&li&Rust 的适用领域比 Go 更广&/li&&li&Rust 社区更愿意改变,Go 社区喜欢坚持他们不需要泛型&/li&&li&Rust 有一个活跃的开发社区,如果你发觉有东西需要做出改变,不管是文档、编程思想、语言设计、bug fix 等等,社区欢迎你提出来一起讨论,并且没有问题的建议经常能被快速接受,不管你以后工作中会不会频繁用到 Rust,与 Rust 一起成长总会是一段有趣的体验;相比之下 Go 算是大公司病,人们不那么对提出改进的建议做出积极响应。我自己也曾经为 Go 感到兴奋,在那半年中我却没有读过 Go 的源码;然而在 Rust 这活跃的社区的促进下我也读过一些源码了,如果你对代码的组织方式等源码相关的问题有疑惑欢迎与我讨论。&/li&&/ol&&br&&p&Rust 相比 Go 的劣势:&/p&&ol&&li&Go 相比 Rust 比较简单,相对容易学习&/li&&li&Rust 的语言设计看上去不如 Go 稳定,我是从 0.10 才开始用 Rust ,感受不深,不过我理解更早的用户可以感受到语言设计的巨大变化。我自己也经历过各种 breaking change,比如 enum 成为命名空间时,数组下标从 uint 改为 usize 时。对 1.0 之后语言的稳定性我们只能拭目以待&/li&&li&Rust 是后来者,文档不那么完整、思维需要做出一些转换(因为它比 Go 的内容更加丰富)。这个我必须要补充一句,Rust 文档一直在高效率地快速更新,文档的缺陷通常都是因为相关的改变是最近一个星期才做出来的。关于文档,我自己就参与过几次更改,有这方面的问题欢迎与我讨论。&/li&&/ol&
我没有并行编程的经验,所以这里就说一些不涉及并行的内容。Rust 相比 Go 的优势:Rust 可以做内联汇编,Go 不行(Rust 的 SIMD 库也在开发中,这种事情你不会用 Go 做)Rust 有确定性析构,Go 没有,只能 whole-world-stop 做 GCRust 的接口(trait)可以…
Rust 野心勃勃的想要取代 C++,别人问你们对 Go 怎么看的时候他们就直接回答我们的目标是 C++,Go 也是个很好的语言balabala。&br&GitHub Wiki 页面上有一个简单的比较 &a class=& wrap external& href=&/rust-lang/rust/wiki/Rust-for-CXX-programmers& target=&_blank& rel=&nofollow noreferrer&&Rust for CXX programmers · rust-lang/rust Wiki · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&最直观的区别就是 Rust 没有 C++ 的历史包袱和 C 包袱,所以一切都能更 clear。还有现代的模块系统。但如果仅仅如此就仅仅是一个 Better C++。&br&&br&但是 Rust 有更精细的编译时检查,把 C++ 的 RAII 模式进行严格的编译时检查,做到了编译时的隐式确定性析构。同时区分了 mut 和非 mut,保护数据的不变性的同时能更适合并发。将类型安全执行到可以达到的极致。(&b&匿名用户的答案非常棒&/b&!)&br&&br&并且,虽然 C++ 也在不断吸取函数式特性,但是 Rust 做得更彻底,模式匹配和代数数据类型结合起来的威力谁用谁知道。错误处理就用的这种方法,没有异常,也不像 Go 有额外的返回值。&br&&br&对泛型的支持很好,而且泛型出错了编译器的错误信息也很友好,不像 C++ 的模板编程……实际上所有的错误信息都很友好,用&b&人话&/b&给你说清楚了你遇到了什么问题,有的时候还能帮你提供修改建议。&br&&br&同时有模式匹配样式的宏,在代码生成的同时保证安全。这个我是听 &a data-title=&@权循真 (upsuper)& data-editable=&true& class=&member_mention& href=&/people/d051f35feb23da866ba4b277& data-hash=&d051f35feb23da866ba4b277& data-tip=&p$b$d051f35feb23da866ba4b277&&@权循真 (upsuper)&/a& 说的……他说声明被一堆宏穿插过来穿插过去,他去 IRC 抱怨别人回复说你去 Servo 组用 Rust 吧,没有这个问题……&br&&br&尽管生命期的概念有点费解,但是语言本身的元素并没有那么多,不需要学习太多的概念。C++ 中构造函数都有各种细节各种坑我简直难以想象。只有类似接口的东西,没有继承可能对一些人来说很不习惯——但是你真的需要继承吗?&br&&br&Rust 的参与者很多都是资深的 C++ 程序员,是一个很对 C++ 程序员胃口的语言。而且上手也很简单,常用指针基本都有对应版本。名字空间的 :: 操作符更是熟悉。&br&&br&劣势的话:&br&&ul&&li&社区不够大库不够多&/li&&li&没有继承(我不觉得是劣势)&/li&&li&基本没有公司用就业机会不多&/li&&li&Mozilla 对比 Google,这个爹的权势不够大&/li&&li&在中国还太小众了,也没多少人来说Rust大法好(我这种弱比都打肿脸强行安利了)&/li&&li&没有一个 IDE ,更不用说像 Visual Studio 这种的 IDE&/li&&li&好吃的语法糖比较少,比如说 C++ Python C# 都有的参数默认值,比如说 Swift 有的 ? 语法糖……&/li&&/ul&&br&Reddit 有人提到,Rust 的 match 做不到 switch 语句直接下落,然后这个人被各种 downvote,恼羞成怒说下次我用 Haskell 举例。&br&&br&嗯……在后面的跟帖中,有人说这个特性还是很重要的,然后用宏写出来了下落式 switch ……&br&(对了,Swift 很多地方参考了 Rust,然后 Rust 又出口转内销了一点点)&br&&br&利益相关:基本不会 C++。真真的 hello, world 水平,以上都是我胡扯的……&br&翻着 C++ Primer 目录写下以上回答……
Rust 野心勃勃的想要取代 C++,别人问你们对 Go 怎么看的时候他们就直接回答我们的目标是 C++,Go 也是个很好的语言balabala。GitHub Wiki 页面上有一个简单的比较 最直观的区别就是 Rust 没有 C…
用过Rust、Golang,Dlang只当过玩具。&br&&ol&&li&上手难度,Golang必然最简单,Rust和Dlang都需要一段时间上手&/li&&li&性能,Rust和Dlang性能都比Golang好,最近的一些测试表示Rust的性能已经和C++差不多了,具体的benchmark可以Google搜到&/li&&li&社区,Golang在近一两年突然火起来,社区建设得很好,相关的第三方库也有许多人开发。Rust要到一月初才发布Alpha版,在Hacker News可以看到许多人都是持关注态度,在正式版发布之后相信会有许多人加入到社区之中。&/li&&li&Dlang实际上只是想做A better C++,而Golang和Rust都是有自己特色的新语言。个人觉得Golang的语法实在是蛋疼,没有Template这一点让我非常不喜欢,然后各种内置数据结构的使用语法也是让人非常费解,比如自带的map,Golang实际上只是想做一个改进版的C,保持语法的简洁。Rust则runs blazingly fast, prevents almost all crashes*, and eliminates data races. 他们目前已经做到了,还吸收了FP系的各种语法进来,语法写起来爽歪歪!&/li&&li&建议去看看Rust的文档,或许你会喜欢的!&/li&&/ol&个人之见,Rust前途无限,就看他的爹有没有能力做到像Golang那样的推广力度了。
用过Rust、Golang,Dlang只当过玩具。上手难度,Golang必然最简单,Rust和Dlang都需要一段时间上手性能,Rust和Dlang性能都比Golang好,最近的一些测试表示Rust的性能已经和C++差不多了,具体的benchmark可以Google搜到社区,Golang在近一两年突然火起来,…
最希望有模块系统(如[1]),不用再分开写头文件和实现文件,估计还可以大大提升编译速度。&br&&br&[1] Reis,Hall, Nishanov, &A Module System for C++&, 2014. &a href=&http://www.open-std.org/jtc1/sc22/wg21/docs/papers/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&open-std.org/jtc1/sc22/&/span&&span class=&invisible&&wg21/docs/papers/.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
最希望有模块系统(如[1]),不用再分开写头文件和实现文件,估计还可以大大提升编译速度。[1] Reis,Hall, Nishanov, "A Module System for C++", 2014.
&p&上星期, Rust 的官方博客 &a href=&http://blog.rust-lang.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Rust Programming Language Blog&i class=&icon-external&&&/i&&/a& 公布了一个&a href=&http://blog.rust-lang.org//1.0-Timeline.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&时间表&i class=&icon-external&&&/i&&/a&:&/p&&blockquote&&ul&&li&Rust 1.0.0-alpha – Friday, Jan 9, 2015&/li&&li&Rust 1.0.0-beta1 – Week of Feb 16, 2015&/li&&li&Rust 1.0.0 – One or more six-week cycles later&/li&&/ul&&/blockquote&&p&照时间表来看 Rust 1.0 的发布不会早于明年春天。&/p&&br&&br&&p&这里有一个 Rust 1.0 完成进度表:&/p&&p&&a href=&http://bit.ly/1dM8ii2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&bit.ly/1dM8ii2&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&可以看到有很多他们正在进行的工作不会在 1.0 发布前完成(看第一列的红色的特性),包括近两天才开始体现到 &a href=&http://doc.rust-lang.org/guide.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Rust Guide&i class=&icon-external&&&/i&&/a& 中的 &a href=&/rust-lang/rfcs/pull/114& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&unboxed closures&i class=&icon-external&&&/i&&/a& 特性(但是&a href=&http://doc.rust-lang.org/std/index.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&在 API 文档中满满都是它的痕迹&i class=&icon-external&&&/i&&/a&)。&/p&&p&有趣的是,两年前他们的&a href=&q.com/news/2012/08/Interview-Rust& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&态度&i class=&icon-external&&&/i&&/a&是版本号 1.0 标志着这个语言的&b&完成&/b&:&br&&/p&&blockquote&&p&There's a roadmap on our wiki. When it's &b&done&/b& (assuming it doesn't grow much new stuff) we'll call it 1.0.&/p&&/blockquote&&p&在这些 Rust 团队正在进行的工作之外,很多内容比如 &a href=&/tj& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TJ Holowaychuk&i class=&icon-external&&&/i&&/a& 给 Rust 提的这个 &a href=&/rust-lang/rust/issues/6973& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Default arguments and keyword arguments · Issue #6973&i class=&icon-external&&&/i&&/a& 都没有被否决,意味着有可能在明年 1.0 发布以后继续增加这些内容。&/p&&br&&br&&p&又是那个老套的模式:你用 90% 的时间完成项目的 90%,再用另外 90% 的时间完成剩下的 10% 。&/p&&br&&br&&p&话说回来,写 Rust 真心挺爽的。&/p&&ul&&li&确定性析构,与此同时不用显式管理内存。有生存期管理,但不像 C/C++ 的内存管理,它完全受编译器检查。&/li&&li&严谨的运行期多态。不像 Go 的基于 interface 的运行期多态,它基于 enum,在简洁的模式匹配语法之上帮助你写出没有错误的代码。&/li&&li&&b&没有&/b&继承。继承真的不管用。接口(契约)才是重要的。在 Rust 中它体现为 trait 。&/li&&li&泛型。Rust 泛型解决了一些 C# 泛型解决不了的问题。再也不会有 C++ 那种眼花缭乱的模板编译报错了。&/li&&/ul&&p&非常喜欢 Rust,希望这个项目能顺利发展。&/p&
上星期, Rust 的官方博客
公布了一个:Rust 1.0.0-alpha – Friday, Jan 9, 2015Rust 1.0.0-beta1 – Week of Feb 16, 2015Rust 1.0.0 – One or more six-week cycles later照时间表来看 Rust 1.0 的发布不会早…
我教你一招。&br&&br&两个技术互有优劣不好取舍的时候,看爹。&br&Go的爹是Google,Rust的爹是Mozilla,……不用我多说什么了吧。&br&&br&别说搞技术的不该这么势利,爹的影响对一门技术的商业化和普及影响是巨大的。&br&&br&就语言本身我更偏向Go,因为我更喜欢简单一些的东西。Go砍掉了OO很多不必要的概念很合我意,而提供的一些语法糖又十分强大实用。
我教你一招。两个技术互有优劣不好取舍的时候,看爹。Go的爹是Google,Rust的爹是Mozilla,……不用我多说什么了吧。别说搞技术的不该这么势利,爹的影响对一门技术的商业化和普及影响是巨大的。就语言本身我更偏向Go,因为我更喜欢简单一些的东西。Go砍掉…
在那些上了Golang结果做不下去的项目里发挥作用啊。。。(光速逃
在那些上了Golang结果做不下去的项目里发挥作用啊。。。(光速逃
&p&关于单线程下的内存安全性:&/p&&p&C++ 和 Rust 当然都能写出安全的单线程代码,区别在于怎样达到这个目的。Rust 的做法是 borrow checker,C++ 的做法是通过惯用法。&/p&&p&这就有个问题。我们说 C++ 可能写出不安全的代码并不是说新手会因为不懂惯用法写出不安全的代码,而更多的是说老手也可能会因为疲劳或者怠工写出不安全的代码。Niko 去年有个幻灯片用 C++ 的 std::map 举例,两处代码分别引用了 map 上的不同部分,最后导致访问错误。&/p&&p&Rust 怎么防止老手写出不安全的代码?borrow checker。这个是 Rust 的核心,其他内容都要为这一点服务。&/p&&p&那你可能会说,对新手那部分,新人完全可以写坏了搅黄项目啊?很高兴你这么说,这里也涉及到 Rust 的一个优点就是它的模块化。Rust 有良好的模块系统。你设计好模块之间的接口,那新手也只能访问公共接口,想访问非公开的内容,没门。把库之间的可见性从链接阶段移到语言中去,这也是显而易见的优点。&/p&&br&&p&补充一下多线程下的内存安全:&/p&&p&很高兴 C++ 标准库也有了线程、future、promise。&/p&&p&C++ 还是那个老问题:惯用法。析构函数、拷贝构造函数。写对了没有。单线程下是对的,也许多线程就错了。要知道你可能从前写好了基础库,没有完整测试它在高并发下的表现,继续用可能就出错了(数据错误、内存访问错误)。Rust 呢?Rust 有一套基础设施(borrow checker), 从语义上检查了跨线程共享。&/p&&br&&p&可能你会说,你丫这不是扯淡么,说了半天不就是说 C++ 可能写错,要比当然比对的代码。其实这就是差异所在:&/p&&ul&&li&对 Rust 来说,编译器保证指出你的错误,&/li&&li&对 C++ 来说,编译器没有这种保证,它也无法保证。&/li&&/ul&&p&当然,以上都是在说 Rust 中没有 unsafe 块的情况。&/p&&p&&b&所以总结来说:&/b&&/p&&ul&&li&&b&Rust 和 C++ 都可以选择安全或不安全,&/b&&/li&&li&&b&对 Rust 来说,安全和不安全的边界(unsafe 块)是清晰的,想保证安全只需退到安全线以后,&/b&&/li&&li&&b&对 C++ 来说,如果你想选择安全,你无法保证已经安全了。&/b&&/li&&/ul&&br&&p&多线程下除了内存安全,当然还有竞争、死锁这样的问题。这方面我就不胡说了。&br&&br&&/p&&p&其他的安全,比如权限控制、隐私、保密、身份鉴别其实也是安全问题,不过这些 Rust 和 C++ 相比没有什么优势,也没什么劣势(主要都是链接到 C 函数的问题,这个 Rust 并没有比 C++ 差)。&/p&
关于单线程下的内存安全性:C++ 和 Rust 当然都能写出安全的单线程代码,区别在于怎样达到这个目的。Rust 的做法是 borrow checker,C++ 的做法是通过惯用法。这就有个问题。我们说 C++ 可能写出不安全的代码并不是说新手会因为不懂惯用法写出不安全的代码…
Golang 好学好用,装备给Python程序员就可以成为合格的开发者,无非写起来比较费键盘,我司已全面装备机械键盘。&br&Dlang么……想要搞一个比CPP更大的大新闻,这能看?CPP程序员看不上,因为它不是CPP,别的程序员那是不敢看……&br&Rust……祝早日发布……
Golang 好学好用,装备给Python程序员就可以成为合格的开发者,无非写起来比较费键盘,我司已全面装备机械键盘。Dlang么……想要搞一个比CPP更大的大新闻,这能看?CPP程序员看不上,因为它不是CPP,别的程序员那是不敢看……Rust……祝早日发布……
取代C/C++&br&&br&命令式的,无GC的,可以编译成紧凑的高性能的原生二进制代码的“系统编程语言”一直有巨大的需求,而C/C++由于具有系统性缺陷(内存管理不当造成的安全漏洞)已经不能适应21世纪的需求&br&&br&Go是Rust的竞争对手之一,不过Go(和Erlang一样)“为服务器端大并发场景设计”的标签太明显(虽然用在非服务器端毫无问题),而且有GC,因此在和服务器无关的场景有很多人更爱用Rust
取代C/C++命令式的,无GC的,可以编译成紧凑的高性能的原生二进制代码的“系统编程语言”一直有巨大的需求,而C/C++由于具有系统性缺陷(内存管理不当造成的安全漏洞)已经不能适应21世纪的需求Go是Rust的竞争对手之一,不过Go(和Erlang一样)“为服务器端…
javascript他爹很多年前用10天撸了这个语言,因为各种设计的细节问题坑太多导致开发前端的人水深火热。现在他想改过自新,于是发明了rust。虽然技术已经得到了进步,但那个品味嘛……我觉得没什么改善。
javascript他爹很多年前用10天撸了这个语言,因为各种设计的细节问题坑太多导致开发前端的人水深火热。现在他想改过自新,于是发明了rust。虽然技术已经得到了进步,但那个品味嘛……我觉得没什么改善。
主要是几点原因:&br&&ol&&li&兼容性,Rust的定位类同于C/C++,如果使用micro thread会导致大量兼容性问题,比如TLS不能用之类的。&br&&/li&&li&green thread的stack实现出了问题,最早的做法是使用segmented stack,这样可以让stack按需增长,但后来发现segmented stack根本不像GCC手册上说的那样对性能“只有轻微影响”,所以这个方案被否了,但如果不用segmented stack则需要每个task都有一个巨大的stack,64位还好,但在32位系统上内存是个大问题&/li&&li&调试器不支持,现有的GDB和LLDB都不能识别附加的stack,导致调试不能,而支持这个功能则需要对调试器进行大量针对Rust green thread的改动,这些改动也基本不可能合并到upstream去&/li&&li&Rust到底还是需要支持Native thread,同时支持green thread需要让API在两者之间保持一致,这是个巨大的负担,项目组经过一段时间的讨论,一致认定这个负担无法承受。&/li&&li&green thread需要大量的runtime支持,这与Rust最小化运行时的目标不一致。&/li&&/ol&可能还有其它原因,一时想不起来了,想起来再补。
主要是几点原因:兼容性,Rust的定位类同于C/C++,如果使用micro thread会导致大量兼容性问题,比如TLS不能用之类的。green thread的stack实现出了问题,最早的做法是使用segmented stack,这样可以让stack按需增长,但后来发现segmented stack根本不像GCC…
多种原因。绿色线程从Rust 0.10版本之后以libgreen的crate方式提供。&br&&br&由2013年的这个邮件引发:&a href=&http://thread.gmane.p.lang.rust.devel/6479& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&thread.gmane.org/gmane.&/span&&span class=&invisible&&comp.lang.rust.devel/6479&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&测试发现M:N的线程模型并不比Native thread效率高。&br&还有其它复杂原因包括:&br&1. M:N模型中需要在所有可能阻塞的系统调用点交出控制权给调度器,库必须处理所有这种情况;&br&2. 代码执行的页面错误也会进入内核导致不可避免的阻塞Native thread;&br&3. 调试工具的缺乏,如果使用Native thread,现有工具都可用;&br&4. 其它(请见邮件最后的Overview)。&br&&br&邮件中提到Windows 7支持的User-mode scheduling以及Google为Linux开发的User-level threads(视频在这:&a href=&/watch?v=KXuZi9aeGTw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& 的页面&i class=&icon-external&&&/i&&/a&)就是为解决M:N模型的这些问题,并能够在各种语言中使用。
多种原因。绿色线程从Rust 0.10版本之后以libgreen的crate方式提供。由2013年的这个邮件引发:测试发现M:N的线程模型并不比Native thread效率高。还有其它复杂原因包括:1. M:N模型中需要在所有可能阻塞的系统调用点交出控制权给调度器…
rust是唯一一个我觉得有可能取代c/c++的语言
rust是唯一一个我觉得有可能取代c/c++的语言
简单翻译一下 &a class=& wrap external& href=&http://internals.rust-lang.org/t/priorities-after-1-0/1901& target=&_blank& rel=&nofollow noreferrer&&Priorities after 1.0&i class=&icon-external&&&/i&&/a& 里面的标题。&br&&br&吐槽一下,尾递归优化呢?被吃了?&br&&br&感谢 &a class=&member_mention& href=&/people/eaba6ab7132eebf8d2f177af15fd99fc& data-hash=&eaba6ab7132eebf8d2f177af15fd99fc& data-tip=&p$b$eaba6ab7132eebf8d2f177af15fd99fc&&@bombless&/a& 在评论里的补充。&br&&br&&b&最高优先级&/b&&br&&ol&&li&完善库 API &a class=& wrap external& href=&/rust-lang/rust/issues/24028& target=&_blank& rel=&nofollow noreferrer&&APIs stabilization metabug · Issue #24028 · rust-lang/rust · GitHub&i class=&icon-external&&&/i&&/a&&/li&&li&更好的 Windows 和 ARM 支持&/li&&li&更快的编译&/li&&li&分发 Rust 库或者程序更好的支持&/li&&li&工具链支持&/li&&li&动态析构(Drop)&a class=& wrap external& href=&/rust-lang/rfcs/blob/master/text/0320-nonzeroing-dynamic-drop.md& target=&_blank& rel=&nofollow noreferrer&&rfcs/0320-nonzeroing-dynamic-drop.md at master · rust-lang/rfcs · GitHub&i class=&icon-external&&&/i&&/a&&/li&&li&内存分配的改进&/li&&li&特化(说的不太明白,泛型的特化已经有了的吧?)&/li&&li&虚结构(有点像虚函数的东西?实现 OO 不再需要大量宏了 wow)&/li&&/ol&&p&&b&可能是高优先级&/b&&/p&&ol&&li&改进租借指针检查&/li&&li&改进宏语法扩展&/li&&/ol&&p&&b&中优先级&/b&&/p&&ol&&li&错误处理语法糖(&a class=& wrap external& href=&/rust-lang/rfcs/pull/243& target=&_blank& rel=&nofollow noreferrer&&Trait-based exception handling by glaebhoerl · Pull Request #243 · rust-lang/rfcs · GitHub&i class=&icon-external&&&/i&&/a&有点类似 Swift)&/li&&li&可重载的 += 运算符&/li&&li&更简洁地控制溢出(&a class=& wrap external& href=&http://internals.rust-lang.org/t/ergonomics-of-wrapping-operations/1756& target=&_blank& rel=&nofollow noreferrer&&Ergonomics of wrapping operations&i class=&icon-external&&&/i&&/a& 貌似是Monad……)&/li&&li&右值升格(&a class=& wrap external& href=&/rust-lang/rfcs/issues/1056& target=&_blank& rel=&nofollow noreferrer&&permit long borrows of constants where possible (rvalue promotion) · Issue #1056 · rust-lang/rfcs · GitHub&i class=&icon-external&&&/i&&/a& 之后看看这什么东西)&br&&/li&&li&智能指针增强(&a class=& wrap external& href=&/rust-lang/rfcs/issues/997& target=&_blank& rel=&nofollow noreferrer&&Extending deref/index with ownership transfer: DerefMove, IndexMove, IndexSet · Issue #997 · rust-lang/rfcs · GitHub&i class=&icon-external&&&/i&&/a&)&/li&&/ol&&p&&b&长期目标&/b&&/p&&ol&&li&直接传递动态尺寸类型(DST Dynamically sized types),而不是通过指针。 &a class=&member_mention& href=&/people/eaba6ab7132eebf8d2f177af15fd99fc& data-hash=&eaba6ab7132eebf8d2f177af15fd99fc& data-tip=&p$b$eaba6ab7132eebf8d2f177af15fd99fc&&@bombless&/a& 的答案说的更多。&br&&/li&&li&Trait 返回值? &a class=& wrap external& href=&/rust-lang/rfcs/blob/62fe495d35f279a24eaef9b61dbefb82/0000-abstract-return-types.md& target=&_blank& rel=&nofollow noreferrer&&rfcs/0000-abstract-return-types.md at 62fe495d35f279a24eaef9b61dbefb82 · rust-lang/rfcs · GitHub&i class=&icon-external&&&/i&&/a&&/li&&li&泛型中的整数参数,也就是依赖类型啦,C++ 中的模板的特性(&a class=& external& href=&/rust-lang/rfcs/pull/884& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/rust-lang/rf&/span&&span class=&invisible&&cs/pull/884&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a& )如 &a class=&member_mention& href=&/people/eaba6ab7132eebf8d2f177af15fd99fc& data-hash=&eaba6ab7132eebf8d2f177af15fd99fc& data-tip=&p$b$eaba6ab7132eebf8d2f177af15fd99fc&&@bombless&/a& 所说可以将很多堆上转化到栈上,不过这特性感觉能有更多黑科技(&br&&/li&&li&完成闭包 Trait(困了,明天仔细看)&/li&&li&更平滑的 C C++ 整合&/li&&li& async/await/yield (WoW)&/li&&li&HKT(Higher Kind Type 实现泛用型 Monad 等 Trait 的基础,现在只能用宏来勉强模拟)&/li&&li&否绑定(或者说排除) &a data-title=&@bombless& data-editable=&true& class=&member_mention& href=&/people/eaba6ab7132eebf8d2f177af15fd99fc& data-hash=&eaba6ab7132eebf8d2f177af15fd99fc& data-tip=&p$b$eaba6ab7132eebf8d2f177af15fd99fc&&@bombless&/a& 的翻译是“负向类型参数限定”&/li&&li&扩展的引用类型(不知道是什么我困了去睡了)&/li&&/ol&
简单翻译一下
里面的标题。吐槽一下,尾递归优化呢?被吃了?感谢
在评论里的补充。最高优先级完善库 API 更好的 Windows 和 ARM 支持更快的编译分…

我要回帖

更多关于 rust破解版 的文章

 

随机推荐