温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

c++的rust安全规则举例分析

发布时间:2021-11-24 11:06:17 来源:亿速云 阅读:106 作者:iii 栏目:大数据

这篇文章主要介绍“c++的rust安全规则举例分析”,在日常操作中,相信很多人在c++的rust安全规则举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c++的rust安全规则举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

微软在c++静态分析工具实现了一些rust的安全规则

Rust和c++是两种流行的系统编程语言。多年来,c++的焦点一直放在性能上。我们越来越多地听到来自客户和安全研究人员的呼吁,认为c++语言应该有更强的安全保证。Visual Studio 2019 version 16.7 在c++的核心检查中包含了四个新规则,以将Rust的一些安全特性合并到c++中。

在Nightly Rust的路径修整

这个  Rust PR  (我正在做的)每晚都被合并到Rust中,这对编译器错误有着广泛的影响。
在错误中完整路径的问题:如下所示的简单程序将导致类型错误。

   
   
  
fn main() {
   let a = vec![vec![String::from("a")]];
   let b = vec![String::from("b")];
   a == b;
}
     
类型错误可以描述为:  cannot compare between values of the types Vec<Vec<String>> and Vec<String>  。在PR改变之前,这几乎是错误信息的第一行,其余的错误信息提供了更多关于特征的细节:

   
   
  
error[E0277]: can't compare `std::vec::Vec<std::string::String>` with `std::string::String`
--> example.rs:5:7
 |
5 |     a == b;
 |       ^^ no implementation for `std::vec::Vec<std::string::String> == std::string::String`
 |
 = help: the trait `std::cmp::PartialEq<std::string::String>` is not implemented for `std::vec::Vec<std::string::String>`
 = note: required because of the requirements on the impl of `std::cmp::PartialEq<std::vec::Vec<std::string::String>>` for `std::vec::Vec<std::vec::Vec<std::string::String>>`
     
值得注意的是,在上述错误中,造成认知负担的最大因素是类型和特征的完整合格路径(例如std::vec:: vec)。对很多人来说,它的可读性有很大的不同。

到此,关于“c++的rust安全规则举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI