出品 | OSC开源社区(ID:oschina2013)
Rust 团队于今天发布了 Rust 1.64.0 新版本,1.64.0 稳定版中的主要更新内容如下:
IntoFuture增强.await
Rust 1.64 稳定了IntoFuture特性。IntoFuture是一个类似于IntoIterator的特性,但IntoFuture不支持for ... in ...循环,而是改变了.await的工作方式。它可以等待任何可以通过IntoFuture转换为Future的东西,这可以帮助你的 API 变得更友好.
corealloc中与 C 语言兼容的 FFI 类型
当调用或被 C ABI 调用时,Rust 代码可以使用c_uint或c_ulong等类型别名以在任何目标上匹配来自 C 的相应类型,而不需要特定于目标的代码或条件。
以前,这些类型别名只在std中可用,所以为嵌入式目标和其他只能使用core或alloc的情况下编写的代码不能使用这些类型。
Rust 1.64 现在在core::fi中提供了所有的c_*类型别名,以及用于处理 C 字符串的core::f i::CStr。Rust 1.64 还提供了alloc::ffi::CString,用于处理只使用alloccrate 的 C 字符串。
rust-analyzer 现在可以通过 rustup 获得
rust-analyzer 现在作为 Rust 工具集的一部分被包含在其中。这使得下载和访问 rust-analyzer 更加容易,并使其在更多平台上可用。如今它可以作为一个 rustup 组件使用,可以通过以下方式安装。
rustup component add rust-analyzer此时,要运行已安装的 rustup 版本,你需要这样调用它:
rustup run stable rust-analyzerrustup 的下一个版本将提供一个内置的代理,这样运行可执行的 rust-analyzer 就会启动相应的版本。
Cargo 改进
当在一个 Cargo 工作空间中处理相关库或二进制 crate 的集合时,你现在可以避免 crate 之间共同的字段值的重复,如共同的版本号、仓库 URL 或rust-version。这也有助于在更新 crate 时保持这些值的同步。
在为多个目标进行构建时,你现在可以向cargo build传递多个--target选项,以便一次性构建所有这些目标。
稳定的 API
以下方法和特性的实现现在已经稳定了:
[future::IntoFuture]()[num::NonZero*::checked_mul]()[num::NonZero*::checked_pow]()[num::NonZero*::saturating_mul]()[num::NonZero*::saturating_pow]()[num::NonZeroI*::abs]()[num::NonZeroI*::checked_abs]()[num::NonZeroI*::overflowing_abs]()[num::NonZeroI*::saturating_abs]()[num::NonZeroI*::unsigned_abs]()[num::NonZeroI*::wrapping_abs]()[num::NonZeroU*::checked_add]()[num::NonZeroU*::checked_next_power_of_two]()[num::NonZeroU*::saturating_add]()[os::unix::process::CommandExt::process_group]()[os::windows::fs::FileTypeExt::is_symlink_dir]()[os::windows::fs::FileTypeExt::is_symlink_file]()
这些类型以前在std::fi中是稳定的,但现在在core和alloc中也可用:
[core::ffi::CStr]()[core::ffi::FromBytesWithNulError]()[alloc::ffi::CString]()[alloc::ffi::FromVecWithNulError]()[alloc::ffi::IntoStringError]()[alloc::ffi::NulError]()
这些类型以前在std::os::raw中是稳定的,但现在在core::ffi和std::ffi中也可用
[ffi::c_char]()[ffi::c_double]()[ffi::c_float]()[ffi::c_int]()[ffi::c_long]()[ffi::c_longlong]()[ffi::c_schar]()[ffi::c_short]()[ffi::c_uchar]()[ffi::c_uint]()[ffi::c_ulong]()[ffi::c_ulonglong]()[ffi::c_ushort]()
更多详情可查看:https://github.com/rust-lang/rust/releases/tag/1.64.0
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.