gpt4 book ai didi

rust - Rust 中的 Atbash 密码

转载 作者:行者123 更新时间:2023-11-29 08:30:48 25 4
gpt4 key购买 nike

所以我正在研究 Atbash Cipher for Rust 的实现——它是 exercism.io 上的一个练习。我有一点 C 经验,发现我的代码相当迂回而且有点折磨人。在 Rust 中进行 str 和 String 操作是我还没有真正理解的事情。看起来这会占用更少的 C 代码行。

下面是我的代码——我是否以正确的方式处理 Rust,或者我是否遗漏了一些重要的概念或最小化数据的方法?这是应该的那么简单吗?

练习涉及获取输入 &str 并输出 String,每个字符根据 atbash 密码更改,每 5 个字符添加一个空格。还包括一个 decode 函数。这一切都在 lib.rs 中。

// "Encipher" with the Atbash cipher.
pub fn encode(plain: &str) -> String {
let mut coded: String = plain.to_string();

coded.retain(|c| c.is_ascii_alphanumeric());
coded.make_ascii_lowercase();

let coded_no_spacing = String::from_utf8(
coded
.bytes()
.map(|c| {
if c.is_ascii_alphabetic() {
122 - c + 97
} else {
c
}
})
.collect(),
)
.unwrap();

spacer(coded_no_spacing)
}

/// "Decipher" with the Atbash cipher.
pub fn decode(cipher: &str) -> String {
let mut out = encode(cipher);
out.retain(|c| c.is_ascii_alphanumeric());
out
}

fn spacer(coded_no_spacing: String) -> String {
let mut coded_no_spacing = coded_no_spacing.chars();

let mut temp_char = coded_no_spacing.next();
let mut counter = 0;
let mut coded_with_spaces = "".to_string();
while temp_char.is_some() {
if counter % 5 == 0 && counter != 0 {
coded_with_spaces.push(' ');
}
coded_with_spaces.push(temp_char.unwrap());
temp_char = coded_no_spacing.next();
counter += 1;
}
coded_with_spaces
}

最佳答案

所以这是发布此类内容的错误位置,但如果其他运动学生通过 google 搜索找到此内容,我想指出 users.ruSTLang.org 上提供的好的建议。

我发了一个类似的帖子,那里的人发了一些 really good suggestions .

关于rust - Rust 中的 Atbash 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58479348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com