小编Cam*_*lid的帖子

如何检查字符串是否包含空格?

如何在 Rust 中检查字符串是否包含任何空格?

例如,这些都应该返回 true:

  • "Hello, world!"
  • "Hello\n"
  • "This\tis\ta\ttab"

string rust

43
推荐指数
1
解决办法
3649
查看次数

`#[lang = "..."]` 属性有什么作用?

我正在阅读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

rust

5
推荐指数
1
解决办法
1324
查看次数

有没有一种简单的方法可以从 `Vec` 中精确提取一个元素?

我有一个对 a 的引用Vec,我想从中提取对一个元素的引用,如果有更多元素或零,则恐慌。如果我有一个数组,则等效为:

let [x] = list;
Run Code Online (Sandbox Code Playgroud)

但是Vecs 是动态调整大小的,因此在这里不起作用。我可以想到一种方法来引用 a Vec,还有一些需要所有权的方法,但我想知道是否有更短更简单的方法。

拥有的选项 1:使用assert!和索引

assert_eq!(list.len(), 1);
let x = &list[0];
Run Code Online (Sandbox Code Playgroud)

拥有的选项 1:使用 try_into()

let [x]: [i32; 1] = list.try_into().unwrap();
Run Code Online (Sandbox Code Playgroud)

拥有的选项 2:使用assert!pop

assert_eq!(list.len(), 1);
let x = list.pop();
Run Code Online (Sandbox Code Playgroud)

那么,有没有更短更清晰的方法呢?

vector rust

3
推荐指数
1
解决办法
99
查看次数

如何告诉 Agda 展开定义以证明等价性

我有一个这样的函数:

\n
open 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\n
Run Code Online (Sandbox Code Playgroud)\n

我想证明,当我用相同的参数(foo c c)调用它时,它总是会产生123

\n
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\n
Run Code Online (Sandbox Code Playgroud)\n

我可以用refl一个简单的例子来证明:

\n
foo-example : foo 'a' 'a' \xe2\x89\xa1 123\nfoo-example = refl\n
Run Code Online (Sandbox Code Playgroud)\n

所以,我认为我可以把这refl …

agda

3
推荐指数
1
解决办法
245
查看次数

在编译时获取 `str` 的字节

有没有办法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. 我该怎么办?

string constants rust

2
推荐指数
1
解决办法
134
查看次数

标签 统计

rust ×4

string ×2

agda ×1

constants ×1

vector ×1