当前位置: 首页 > article >正文

2411rust,1.83

原文

1.83.0稳定版

新的能力

此版本包括几个说明在环境中运行代码可干的活的大型扩展.这是指编译器在编译时必须计算的所有代码:项的初值,数组长度,枚举判定值,模板参数及可从(constfn)此类环境调用的函数.

引用.当前,除了静项的初化器式外,禁止环境引用静态项.现已放开此限制:

static S: i32 = 25;
const C: &i32 = &S;

但注意,在环境中,仍禁止读取可变内部可变静态值.此外,常的最终值不能引用可变或内部可变静态:

static mut S: i32 = 0;
const C1: i32 = unsafe { S };
//错误:常访问可变全局内存
const C2: &i32 = unsafe { &S };
//错误:在`'常'`中遇见`可变内存引用`

这些限制确保仍是"":在执行整个程序过程中,它们计算的值及它们按模式的含义(可能涉及解引用)都是相同的.

也即,允许按可变或内部可变静态原始指针计算常数:

static mut S: i32 = 64;
const C: *mut i32 = &raw mut S;

可变引用和指针.

现在可在环境中使用可变引用:

const fn inc(x: &mut i32) {
    *x += 1;
}
const C: i32 = {
    let mut c = 41;
    inc(&mut c);
    c
};

还支持可变原始指针和内部可变:

use std::cell::UnsafeCell;
const C: i32 = {
    let c = UnsafeCell::new(41);
    unsafe { *c.get() += 1 };
    c.into_inner()
};

但是,只能在常的计算中使用可变引用和指针,它们不能变成常最终值一部分:

const C: &mut i32 = &mut 4;
//`error[E0764]`:常的最终值中禁止使用可变引用

稳定的API

BufRead::skip_until
ControlFlow::break_value
ControlFlow::continue_value
ControlFlow::map_break
ControlFlow::map_continue
DebugList::finish_non_exhaustive
DebugMap::finish_non_exhaustive
DebugSet::finish_non_exhaustive
DebugTuple::finish_non_exhaustive
ErrorKind::ArgumentListTooLong
ErrorKind::Deadlock
ErrorKind::DirectoryNotEmpty
ErrorKind::ExecutableFileBusy
ErrorKind::FileTooLarge
ErrorKind::HostUnreachable
ErrorKind::IsADirectory
ErrorKind::NetworkDown
ErrorKind::NetworkUnreachable
ErrorKind::NotADirectory
ErrorKind::NotSeekable
ErrorKind::ReadOnlyFilesystem
ErrorKind::ResourceBusy
ErrorKind::StaleNetworkFileHandle
ErrorKind::StorageFull
ErrorKind::TooManyLinks
Option::get_or_insert_default
Waker::data
Waker::new
Waker::vtable
char::MIN
hash_map::Entry::insert_entry
hash_map::VacantEntry::insert_entry

环境中稳定接口:


Cell::into_inner
Duration::as_secs_f32
Duration::as_secs_f64
Duration::div_duration_f32
Duration::div_duration_f64
MaybeUninit::as_mut_ptr
NonNull::as_mut
NonNull::copy_from
NonNull::copy_from_nonoverlapping
NonNull::copy_to
NonNull::copy_to_nonoverlapping
NonNull::slice_from_raw_parts
NonNull::write
NonNull::write_bytes
NonNull::write_unaligned
OnceCell::into_inner
Option::as_mut
Option::expect
Option::replace
Option::take
Option::unwrap
Option::unwrap_unchecked
Option::<&_>::copied
Option::<&mut _>::copied
Option::<Option<_>>::flatten
Option::<Result<_, _>>::transpose
RefCell::into_inner
Result::as_mut
Result::<&_, _>::copied
Result::<&mut _, _>::copied
Result::<Option<_>, _>::transpose
UnsafeCell::get_mut
UnsafeCell::into_inner
array::from_mut
char::encode_utf8
{float}::classify
{float}::is_finite
{float}::is_infinite
{float}::is_nan
{float}::is_normal
{float}::is_sign_negative
{float}::is_sign_positive
{float}::is_subnormal
{float}::from_bits
{float}::from_be_bytes
{float}::from_le_bytes
{float}::from_ne_bytes
{float}::to_bits
{float}::to_be_bytes
{float}::to_le_bytes
{float}::to_ne_bytes
mem::replace
ptr::replace
ptr::slice_from_raw_parts_mut
ptr::write
ptr::write_unaligned
<*const _>::copy_to
<*const _>::copy_to_nonoverlapping
<*mut _>::copy_from
<*mut _>::copy_from_nonoverlapping
<*mut _>::copy_to
<*mut _>::copy_to_nonoverlapping
<*mut _>::write
<*mut _>::write_bytes
<*mut _>::write_unaligned
slice::from_mut
slice::from_raw_parts_mut
<[_]>::first_mut
<[_]>::last_mut
<[_]>::first_chunk_mut
<[_]>::last_chunk_mut
<[_]>::split_at_mut
<[_]>::split_at_mut_checked
<[_]>::split_at_mut_unchecked
<[_]>::split_first_mut
<[_]>::split_last_mut
<[_]>::split_first_chunk_mut
<[_]>::split_last_chunk_mut
str::as_bytes_mut
str::as_mut_ptr
str::from_utf8_unchecked_mut

http://www.kler.cn/a/419554.html

相关文章:

  • VUE 入门级教程:开启 Vue.js 编程之旅
  • 【C++boost::asio网络编程】有关异步读写api的笔记
  • 最新版Chrome浏览器调用ActiveX控件之allWebOffice控件
  • docker build ubuntu ssh
  • 头歌 处理机调度(编程题)
  • 基于 LlamaFactory 的 LoRA 微调模型支持 vllm 批量推理的实现
  • SpringBoot集成Milvus|(实现向量的存储和查询)
  • go使用mysql实现增删改查操作
  • 【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例
  • WPS for Mac免登录使用工具栏
  • 使用Dubbo: 创建基于Spring Boot的微服务应用
  • c++:string类
  • 网络安全防护指南
  • 《Python 视频格式转换全攻略》
  • HOG(Histogram of Oriented Gradients)特征提取原理及应用场景
  • 医院管理系统
  • 为什么爱用低秩矩阵
  • 题目 1013: [编程入门]Sn的公式求和
  • 设计模式:14、抽象工厂模式(配套)
  • 高校心理教育辅导系统
  • C#使用Graphics、Pen 和 Brush 类进行2D图形绘制
  • 汽车IVI中控OS Linux driver开发实操(二十七):常用Linux指令
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(4))
  • 前端框架的选择与反思:在简约与复杂之间寻找平衡
  • 使用Ansible自动化部署Zabbix6监控
  • 困扰解决:mfc140u.dll丢失的解决方法,多种有效解决方法全解析