为什么我从Java切换到Rust? Opensource.com


Rust感觉像是我要去的地方:结构合理,富有表现力,可以帮助您做正确的事。
经过多年的Java开发,我最近开始学习Rust。有五个要点是:

  1. Rust感到很熟悉
  2. 引用很有意义
  3. 所有权会很有意义
  4. Cargo很有帮助
  5. 编译器很棒

我绝对支持所有这些,但是我还有更多话要说,因为我现在觉得自己像Rustacean :
  • 我不想再用其他任何东西编程。
  • 我已经摆脱了简单的魔术咒语。

这两个语句是什么意思?好吧,第一个很简单:Rust感觉像是个理想的地方。它结构合理,表达力强,可以帮助您做正确的事,它具有出色的文档和工具,并且有一个很棒的社区。而且,当然,所有内容都是开源的,这是我深深关心的。
这是使用Rust的示例:

// Where checkhashes is pre-defined vector of hashes to verify
let algorithms = vec![String::from(
"SHA-256"); checkhashes.len()];

这将创建一个新的向量,称为“algorithms”,其长度与向量“ checkhash”相同,并用字符串“ SHA-256”填充。
第二件事?好吧,我决定为了正确学习Rust,我应该参加一个最初用Java编写的项目,并希望在相当惯用的Rust中重新实现它。不久之后,在遭遇错误时我围绕实现而不是语法去解决错误,是基于编译器输出对我的代码进行细微、看似随机的更改。换句话说,我正在让事情进行编译,了解为什么要编译,然后才犯了编程错误。
这是另一个例子,应该感到很熟悉:

fn usage() {
    println!("Usage: findfromserial KEY_LENGTH INITIAL_SALT CHECK_HASH1 [CHECK_HASH2, ...]");
    std::process::exit(1);
}

这是向前迈出的一大步。当您开始学习一种语言时,总会复制和粘贴在其他地方看到的代码,或者在不熟悉的结构中摆弄直到它们起作用为止。代码或产生您不太了解但似乎可以正常工作的现象有时被称为“使用了魔术”,一些语言特别倾向于这种方式,但是许多(大多数?)学习新语言的人在刚开始时只是因为他们希望事情能起作用。