d的dip1000与live

int* foo(return scope int* x)@safe{
     auto y=x;
     int t;
     auto z=&t;
     return y; // 可,但不返回z
}

它并不跟踪生命期,它只是从x复制属性到y.因为它是用栈变量地址初化的,所以zscope属性.

@live的目的是为了防止:
1.释放后使用
2.多释放
3.无释放

更进一步,需要用户构建封装容器,并可能包括一些部分Rust``@trusted功能
如果没有上面的1,2,3,DIP1000就不是完整方法,这是正确的.但dip1000是实现1,2,3的必要前提.

默认,直降在很多年前就从D中删除了.
第二个难题是,可在嵌套域中放case语句.
最好还是让switch保持原样,开发新模式匹配构造,以适应现代人感受.
,每个case都引入了新域.

int main(){
    int x;
    switch(x){
        case 0:
            int y;
            break;
        case 1:
            int y;
            break;
        default:
            int y;
            break;
    }
    return 0;
}

CD间切换搞混了.
另一个问题是switch case没有顺序,应该是不相交的.但是对模式匹配,语义一般是按顺序每个可覆盖,且应把更具体模式放在前面的模式.
switch语法也是老式的,更现代语法是:

 match (x){
    0 => foo();
    3 => bar();
}

注意,不需要"break".

如,DIP1000甚至不支持在同一个结构不同字段中存储具有不同生命期对象.
是的.DIP1000根本不跟踪生命期.它只跟踪域内生命期.跟踪需要分析数据流,这在@live的活.
根本问题是DIP1000缺乏模块化方法来跟踪不同生命期.
DIP1000非常喜欢合并不同生命期,并选择短的.
放松安全性是@信任的工作,类似Rust不安全,因为Rust的表达能力也是有限的.

posted @   zjh6  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示