如何从较大的数组中复制或引用字节片?
我只需要读取它们,但我希望指定大小以在编译时捕获错误。
let foo = rand::thread_rng().gen::<[u8; 32]>();
let bar: [u8; 16] = foo[0..16];
let baz: &[u8; 16] = &foo[16..32];
错误是:
error[E0308]: mismatched types
--> src/main.rs:64:22
|
64 | let bar: [u8; 16] = foo[0..16];
| -------- ^^^^^^^^^^ expected array `[u8; 16]`, found slice `[u8]`
| |
| expected due to this
error[E0308]: mismatched types
--> src/main.rs:65:23
|
65 | let baz: &[u8; 16] = &foo[16..32];
| --------- ^^^^^^^^^^^^ expected array `[u8; 16]`, found slice `[u8]`
| |
| expected due to this
|
= note: expected reference `&[u8; 16]`
found reference `&[u8]`
我可以看到foo[0...16]
正好是16个字节,而不是一个未知长度的切片[u8]
。我如何帮助编译器看到这一点?
你的问题不是你不能引用一段字节;这是因为切片不是数组。
您可能需要arrayref板条箱或TryInto
trait。在这个Github问题中,也有一些关于自动执行此操作的讨论。
问题内容: 有人可以向我解释一下吗?这对我来说毫无意义。 我将字典复制到另一个字典中,然后编辑第二个字典,并且两者都已更改。为什么会这样呢? 问题答案: 分配时,你并没有复制该文件的副本dict1,结果dict2只是该文件的另一个名称dict1。 要复制字典等可变类型,请使用的模块。
在Go中,复制切片是标准费用,如下所示: 在《铁锈》中,我找不到类似的替换方法。我想到的东西是这样的: 不幸的是,我遇到了无法解决的编译错误: 如何设置?有没有更好的复制切片的方法?
问题内容: 我只是想知道哪种方法更好(或者我是否缺少更好的方法)。我试图确定一个单词的第一个字母和最后一个字母是否相同,并且有两个明显的解决方案。 要么 据我了解,第一个只是提取字符串的片段并进行字符串比较,而第二个则是从任一端提取字符并将其作为字节进行比较。 我很好奇两者之间是否存在性能差异,并且是否有任何“可取的”方式来做到这一点? 问题答案: 如果用字母表示您的符文,请使用: 如果您的意思是
我的问题是,当我上传一个文件超过我在脚本中设置的限制(5 MB)时,它会在网站顶部显示此警告: 警告:第0行未知中32485176字节的POST内容长度超过了20971520字节的限制 例如,在这里,我上传了一个文件超过(30 MB),但当我上传一个文件超过(5 MB),小于30(或没有那么大)它不显示警告,只显示我想要的代码错误: 我正在localhost,这个错误每次都出现,我知道如何通过修改
我有一个实体用户: 和实体课程 我需要制作 user1 课程的副本(深度副本),并将此副本添加到另一个用户 2。最后,我需要用户1有课程,用户2有课程的副本。
当汇总需要一个ToIntFunction时,以下方法引用如何有效?我这样问是因为GetCarries的签名与applyAsInt的签名不匹配