- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个非常好的 split_at_mut 函数,它可以将 1 个切片分成 2 个...有没有办法撤消该操作,以便我可以再次返回到我的原始数组——假设我知道它们在内存中是连续的(因为我只是拆分它们)
问题是:有没有类似join_mut的东西,像这样:
fn main() {
let mut item : [u8;32] = [0u8;32];
let (mut first, mut second) = item[..].split_at_mut(16);
first[0] = 4;
second[0] = 8;
let mut x = first.join_mut(first, second); // <-- compile error
assert_eq(x[16], 8);
}
最佳答案
标准库中没有这样的函数,可能是因为它是一个相当小众的情况,通常可以使用第一种情况下拆分的切片来解决。
话虽这么说,但只要有一点不安全,就可以实现该功能。
fn join_mut<'a, T>(first: &'a mut [T], second: &'a mut [T]) -> Option<&'a mut [T]> {
let fl = first.len();
if first[fl..].as_mut_ptr() == second.as_mut_ptr() {
unsafe {
Some(::std::slice::from_raw_parts_mut(first.as_mut_ptr(), fl + second.len()))
}
}
else {
None
}
}
关于split - Rust:有没有 split_at_mut 的对立面(即 join_mut)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36382190/
考虑以下代码(最小示例): use std::collections::HashMap; fn main() { let mut map: HashMap = HashMap::new();
我遇到了“错误[E0495]:由于需求冲突,无法推断出 autoref 的适当生命周期”,这个简单的函数: fn assign_split_at_mut(s: &'b mut &'a mut [T],
Vec有两种方法: fn push(&mut self, value: T) fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T]
有一个非常好的 split_at_mut 函数,它可以将 1 个切片分成 2 个...有没有办法撤消该操作,以便我可以再次返回到我的原始数组——假设我知道它们在内存中是连续的(因为我只是拆分它们) 问
我正在尝试从无法编译的嵌入式 Rust 示例中提取一些代码。许多这些旧的嵌入式示例无法编译,因为它们每晚都在使用,并且很快就会被破坏和忽视。 let mut buffer : [u8; 2048] =
我是一名优秀的程序员,十分优秀!