本文共 2527 字,大约阅读时间需要 8 分钟。
rust vs java
经过多年的Java开发,我最近开始 。 我要牢记的五个要点是:
我绝对支持所有这些,但是我还有更多话要说,因为我现在觉得自己像Rustacean :
这两个陈述是什么意思? 好吧,第一个很简单:Rust感觉像是个理想的地方。 它结构合理,表达力强,可以帮助您做正确的事, 它具有出色的文档和工具,并且有一个很棒的社区。 而且,当然,所有内容都是开源的,这是我深深关心的。
这是使用Rust的示例:
// Where checkhashes is pre-defined vector of hashes to verify let algorithms = vec ! [ String :: from ( "SHA-256" ) ; checkhashes.len ( ) ] ;
这将创建一个称为“算法”的新向量,其长度与向量“校验”相同,并用字符串“ SHA-256”填充。 第二件事? 好吧,我决定为了正确学习Rust,我应该接受一个最初用Java编写的项目,并希望在相当惯用的Rust中重新实现它。 不久之后,我开始围绕实现而不是语法解决错误,并且犯了错误。 而且我不只是从教程中复制文本,也不是根据编译器的输出对我的代码进行细微,看似随机的更改。 换句话说,我正在让事情进行编译,了解为什么要编译,然后犯了编程错误。
这是另一个例子,应该感到很熟悉:
fn usage ( ) { println ! ( "Usage: findfromserial KEY_LENGTH INITIAL_SALT CHECK_HASH1 [CHECK_HASH2, ...]" ) ; std :: process :: exit ( 1 ) ; }尤其倾向于这种方法,但是许多(大多数?)学习新语言的人在刚开始时就倾向于这样做,只是因为他们希望事情能够正常进行。
最近,直到凌晨1点,我才实现了一项新功能-接受命令行输入-我无法真正动手。 我花了很多时间(包括寻找和未能找到一些合适的咒语),然后在内部rust-lang频道上寻求帮助。 (您可能要注册一个我认识的人居住的 。)许多人对出现的问题提出了一些建议,而一个人在挑选一些建议方面非常有帮助,所以我更好地了解了他们。 他解释了很多,但最后说:“我不知道您正在调用的哈希函数的返回类型,我认为这是您自行解决这一问题的好地方。”
这就是我想要去的地方:
checkhashes = std :: env :: args ( ) .skip ( 3 ) .map ( | x | hex :: decode ( x ) ) .collect ::< Result < Vec < Vec < u8 >>, _ >> ( ) .unwrap ( ) ;
在您绕过它之前,这似乎很奇怪,但是它实际上确实可以按您期望的那样工作:我想从命令行获取输入,跳过前三个输入,对其余输入进行迭代,将每个转换为u8的向量并创建这些向量。 “ collect”调用末尾的_
清除所有错误或问题,基本上将其丢弃。
这正是我所需要的,也是任何人(包括编程语言)的学习者所需要的。 因此,当我不得不在午夜下楼放狗时,我决定呆下来看看自己是否可以自己解决问题。 而我做到了。 我接受了人们提出的建议,了解他们在做什么,试图弄清他们应该做什么,弄清楚他们应该如何做,然后找到实现它的正确方法。
我仍然有很多东西要学习,而且我还会犯很多错误,但是我现在觉得自己可以找到解决这些错误的方法(在此过程中需要一点帮助,感谢–已经为我指明正确方向的每个人)。 但是我确实觉得我现在正在用Rust编程。 我喜欢它。
本文基于有关安全博客Alice,Eve和Bob的 ,并在获得许可的情况下可以重用。
翻译自:
rust vs java
转载地址:http://ypdzd.baihongyu.com/