它并不跟踪
生命期,它只是从x复制属性到y
.因为它是用栈变量
地址初化的,所以z
取scope
属性.
@live
的目的是为了防止:
1
.释放
后使用
2
.多释放
3
.无释放
更进一步,需要用户构建封装
的容器
,并可能包括一些部分Rust``@trusted
功能
如果没有上面的1,2,3
,DIP1000
就不是完整方法
,这是正确的.但dip1000
是实现1,2,3
的必要前提.
默认,直降
在很多年前就从D
中删除了.
第二个难题是,可在嵌套
域中放case
语句.
最好还是让switch
保持原样
,开发新模式匹配
构造,以适应现代人
感受.
,每个case
都引入了新域
.
在C
和D
间切换搞混了.
另一个问题是switch case
没有顺序,应该是不相交
的.但是对模式匹配
,语义
一般是按顺序
每个可覆盖
,且应把更具体
模式放在前面
的模式.
switch
语法也是老式
的,更现代
语法是:
注意,不需要"break"
.
如,DIP1000
甚至不支持在同一个结构
的不同字段
中存储具有不同生命期
对象.
是的.DIP1000
根本不跟踪生命期
.它只跟踪域内
生命期.跟踪
需要分析
数据流,这在@live
的活.
根本问题是DIP1000
缺乏模块化
方法来跟踪
不同生命期.
DIP1000
非常喜欢合并
不同生命期
,并选择短的.
放松
安全性是@信任
的工作,类似Rust
的不安全
,因为Rust
的表达能力也是有限的.