rust - 在 Rust 中连接字节、字符串和比较

标签 rust

我有以下用于比较 CRLF 的代码片段。它编译并运行,但使用起来似乎是一种奇怪的语法。我想知道是否有更自然的方式来进行比较而无需同时转换左侧和右侧。

pub const CR: u8 = b'\r';
pub const LF: u8 = b'\n';
pub const CRLF: [u8, ..2] = [CR,LF]; // this probably should have a different type?

let mut cur_line: String;
// *snip getting line value*

// casting both the left and right hand side, is there a better way?
if cur_line.as_bytes() == &CRLF {
    break;
}

最佳答案

我会使用 &'static [u8] :

pub const CRLF: &'static [u8] = b"\r\n";  // or &[CR, LF]

我还要说的是,您应该小心使用的线型;是cur_line保证是UTF-8?如果不是,应该是Vec<u8>而不是 String , 和 CRLF可能应该是 &'static str , "\r\n" .不过反正比较cur_line.as_bytes() == CRLF很好。 (一旦它是 &'static [u8] 而不是 [u8, ..2] ,则不需要 &。)

关于rust - 在 Rust 中连接字节、字符串和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27071836/

相关文章:

rust - 为什么 find() 和 position() 的谓词需要不同的类型?

post - Hyper POST 请求总是产生 400

rust - 如何使用Serde反序列化Prost枚举?

string - 字符串向量上的连接运算符的等价物是什么?

types - 为什么类型别名不能使用 Rust 中原始类型的关联常量?

generics - 如何在所有能够进行算术运算的类型上实现泛型?

rust - Rust 中的惰性序列生成

rust - 什么时候静态生命周期不合适?

rust - 我如何要求可以比较对泛型类型的引用与泛型类型的相等性?

hash - 我如何使用 std::hash::hash?