如何在 Rust 中检查字符串是否包含任何空格?
例如,这些都应该返回 true:
"Hello, world!""Hello\n""This\tis\ta\ttab"我正在阅读https://doc.rust-lang.org/1.56.0/src/core/str/mod.rs.html#120-122上的代码:
#[lang = "str"]
#[cfg(not(test))]
impl str {
...
Run Code Online (Sandbox Code Playgroud)
我找不到对此属性的引用lang。它与声明原始类型的结构有关吗str?如果是这样,处理 的内部结构的信息在哪里str?
我有一个对 a 的引用Vec,我想从中提取对一个元素的引用,如果有更多元素或零,则恐慌。如果我有一个数组,则等效为:
let [x] = list;
Run Code Online (Sandbox Code Playgroud)
但是Vecs 是动态调整大小的,因此在这里不起作用。我可以想到一种方法来引用 a Vec,还有一些需要所有权的方法,但我想知道是否有更短更简单的方法。
assert!和索引assert_eq!(list.len(), 1);
let x = &list[0];
Run Code Online (Sandbox Code Playgroud)
try_into()let [x]: [i32; 1] = list.try_into().unwrap();
Run Code Online (Sandbox Code Playgroud)
assert!和popassert_eq!(list.len(), 1);
let x = list.pop();
Run Code Online (Sandbox Code Playgroud)
那么,有没有更短更清晰的方法呢?
我有一个这样的函数:
\nopen import Data.Char\nopen import Data.Nat\nopen import Data.Bool\nopen import Relation.Binary.PropositionalEquality\nopen Relation.Binary.PropositionalEquality.\xe2\x89\xa1-Reasoning\n\nfoo : Char \xe2\x86\x92 Char \xe2\x86\x92 \xe2\x84\x95\nfoo c1 c2 with c1 == c2\n... | true = 123\n... | false = 456\nRun Code Online (Sandbox Code Playgroud)\n我想证明,当我用相同的参数(foo c c)调用它时,它总是会产生123:
foo-eq\xe2\x87\x92123 : \xe2\x88\x80 (c : Char) \xe2\x86\x92 foo c c \xe2\x89\xa1 123\nfoo-eq\xe2\x87\x92123 c =\n foo c c \xe2\x89\xa1\xe2\x9f\xa8 {!!} \xe2\x9f\xa9\n 123 \xe2\x88\x8e\nRun Code Online (Sandbox Code Playgroud)\n我可以用refl一个简单的例子来证明:
foo-example : foo 'a' 'a' \xe2\x89\xa1 123\nfoo-example = refl\nRun Code Online (Sandbox Code Playgroud)\n所以,我认为我可以把这refl …
有没有办法str在 Rust 的编译时获取 a 的字节?具体来说,我想创建一个const喜欢:
const FOO_BYTES: [u8; 3] = [70, 79, 79];
Run Code Online (Sandbox Code Playgroud)
但我想写出一个字符串文字而不是手动编写编码的字节。
使用 plainstr::as_bytes不起作用,因为它返回一个切片 ( &[u8])。我尝试使用try_into,但这给出了不同的错误:
常量调用仅限于常量函数、元组结构和元组变体
因为try_into不是const fn. 我该怎么办?