内容简介:Rust 1.50.0 稳定版已发布,此版本改进了数组索引、扩展了对联合字段 (union field) 的安全访问,并将其添加到标准库。 具备 const-generic 特性的数组索引 此版本为任意长度const N的数组[T; N]增加了ops::Inde...
Rust 1.50.0 稳定版已发布,此版本改进了数组索引、扩展了对联合字段 (union field) 的安全访问,并将其添加到标准库。
具备 const-generic 特性的数组索引
此版本为任意长度const N的数组[T; N]增加了ops::Index和IndexMut实现,索引操作符[]可通过内置的 compiler magic 在数组中运行。
fn second<C>(container: &C) -> &C::Output
where
C: std::ops::Index<usize> + ?Sized,
{
&container[1]
}
fn main() {
let array: [i32; 3] = [1, 2, 3];
assert_eq!(second(&array[..]), &2); // slices worked before
assert_eq!(second(&array), &2); // now it also works directly
}
数组中定义为const类型的值支持重复
Rust 的数组可以写为列表[a, b, c]或重复形式[x; N]。
fn main() {
// This is not allowed, because `Option<Vec<i32>>` does not implement `Copy`.
let array: [Option<Vec<i32>>; 10] = [None; 10];
const NONE: Option<Vec<i32>> = None;
const EMPTY: Option<Vec<i32>> = Some(Vec::new());
// However, repeating a `const` value is allowed!
let nones = [NONE; 10];
let empties = [EMPTY; 10];
}
针对ManuallyDrop<T>联合字段的安全分配
Rust 1.49 支持将ManuallyDrop<T>字段添加到union,从而允许合并Drop。不过,当一个字段被赋值时,union不会丢弃旧的值,因为它们不知道哪个变体此前是有效的,所以安全的 Rust 以前只限制为仅限于Copy类型,而Copy类型从来不会Drop。当然,ManuallyDrop<T>也不需要Drop,因此 Rust 1.50 现在允许对这些字段进行安全分配。
Rust 1.50.0 还新增了 9 个稳定的函数:
bool::thenbtree_map::Entry::or_insert_with_keyf32::clampf64::clamphash_map::Entry::or_insert_with_keyOrd::clampRefCell::takeslice::fillUnsafeCell::get_mut
延伸阅读
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 算法-计算小数组在大数组中的索引
- python – 从一维数组的索引和值构造二维numpy数组
- JavaScript算法题:查找数字在数组中的索引
- LeetCode每日一题:找数组的中心索引(No.724)
- PHP重置数组为连续数字索引的几种方式总结
- Leetcode724:寻找数组的中心索引(java、python3)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
P3P Web隐私
克劳娜著、技桥译 / 克劳娜 / 清华大学出版社 / 2004-5 / 45.0
自万维网络中出现商业站点以来,基于Web的商业需求和用户的隐私权利之间就存在着不断的斗争。Web开发者们需要收集有关用户的信息,但是他们也需要表示出对用户隐私的尊重。因此隐私偏好工程平台,或者称之为P3P,就作为满足双方利益的技术应运而生了。 P3P由万维网协会研制,它为Web用户提供了对自己公开信息的更多的控制。支持P3P的Web站点可以为浏览者声明他们的隐私策略。支持P3P的浏览......一起来看看 《P3P Web隐私》 这本书的介绍吧!