0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

cargo careful:为你的代码提供更多安全保证

Rust语言中文社区 来源:Rust语言中文社区 作者:hsqStephenZhang 2022-10-27 09:52 次阅读

cargo careful:为你的代码提供更多安全保证

您是否知道标准库充满了用户永远看不到的有用检查?标准库中有很多断言,它们会做一些事情,比如检查char::from_u32_unchecked必须针对一个有效的 char、CStr::from_bytes_with_nul_unchecked只能在没有内部 null 字节的情况下调用,copy或者copy_nonoverlapping必须针对内存布局对齐的非 null 指针(非重叠)。但是,由 rustup 分发的常规标准库是在没有调试断言的情况下编译的,因此用户很难从这些额外检查中受益。

cargo careful 就是为了弥补这个差距,它在第一次调用时,会从源代码构建一个带有调试断言的标准库,然后使用该标准库运行您的程序或测试套件。

您可以通过cargo install cargo-careful快速安装,然后执行cargo +nightly careful run/test用于执行二进制 crate 或测试,并进行额外的调试检查。

需要注意的是,这自然会比常规调试或发布版本慢,但它比在 Miri 中执行程序要快得多,并且仍然有助于找到一些未定义的行为。当然,如果您想要更加彻底的检查,Miri 会是一个更好的选择,两者结合使用,体验更佳。

Axum 风格的函数参数示例

作者使用 Axum 时候,思考了这样一件事:Rust 是一个静态编译的语言,并且没有函数重载和可选参数这类特性,但是 Axum 中,get函数却可以接收不同类型的函数指针,这是为什么呢?

pYYBAGNZ5MCAYh6nAAD3HjtnuF0048.jpg

作者创建了一个仓库,动手实践,详细解释了其中的奥秘。

值得一提的是,Axum 当时也参考了 bevy 的 query system 设计。

编译器优化的思考

Rust 编译器背后为我们做了很多优化,但是,如果让你来实现,你会如何下手呢?典型的思路可能是:

找到可以应用特定优化方法的场景

通过分析,找到这种场景

应用你的优化方法

如果将很多编译优化方法结合起来,编译器的性能就能提升一大截。但是,这也绝非易事,在一个场景下实现编译优化,所要考虑的因素和需要的信息,远比你想象的要多。

本文的作者就通过几个例子,解释了他对于编译优化背后的思考,相信你耐心看完,肯定有不少收获。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1552

    浏览量

    48452
  • rust语言
    +关注

    关注

    0

    文章

    58

    浏览量

    2955

原文标题:【Rust日报】2022-09-27 cargo careful:为你的代码提供更多安全保证

文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    安全芯片能否保证芯片安全?

    ,由于软件加密只是增加破解难度,不能防止复制,越来越多的设计采用硬件加密方式来保护IPCORE。以常见的MCu+存储器系统例,通常的保护模式是在系统文件中设置一段用于验证的加密安全代码,通过存储器
    发表于 10-10 14:42

    了解无线监控应用_保证信息的传输安全

    了解无线监控应用_保证信息的传输安全
    发表于 08-03 10:01

    智能音箱的安全隐患需要了解下

    准备记录、处理和存储它接收到的任何信息,会有什么感觉?可以将它理解是一种危言耸听的说法,但从本质上讲,它的确是智能音箱具备的功能所能办到的。   智能音箱除了提供音频播放功能之
    发表于 07-19 09:28

    使用PMIC来保证的系统安全

    当你在设计安全控制面板或是自动门锁等电池供电运行的便携式系统时,电路板上的每一英寸都很宝贵,每一秒钟的操作与运行也十分重要,并且(最后一点,不过也很重要)系统所花费的每一分钱都应该发挥其应有
    发表于 09-06 15:31

    工业用物联网多种行业提供更多服务

    (比如说能源、制造、养护维修等),并且为多种行业提供更高的安全和安防性能、更好的使用体验、全新的业务服务,以及其它更多功能,这些行业包括:智能制造业:为了改进制造工艺,制造商正在将有线和无线连通性添加到
    发表于 09-10 11:57

    未来汽车的安全怎么保证

    ,同时让我们可以更有效地利用现有的道路设施,在减少安全事故的同时实现更大的交通流量。 回到之前的话题,在改善驾驶员辅助、自动驾驶员服务和实现更多自主功能的同时,开发人员如何保证这些自主驾驶系统不会
    发表于 03-27 06:45

    连网装置提供多域安全

    產品對支援各種新應用與新服務的需求。試著把的行動處理器想像成的家;如果有人闖入你家,他們便會試圖進入每個房間;OmniShield透過建置多道門鎖(安全域)來保護強化鐵門(晶片級的硬體隔離),可在
    发表于 09-18 09:05

    如何保证锂离子电池安全的设计

    保证锂离子电池安全的设计
    发表于 02-26 08:35

    能否提供示例的源代码或为wifi连接模块添加更多入门指南呢?

    预算项目使用繁重的操作系统)。我喜欢“STM32H7B3I-DK 编译的演示二进制文件”中的示例,但找不到源代码。您能否提供示例的源代码或为 wifi 连接模块添加更多入门指南?谢谢。
    发表于 12-06 06:15

    如何在构建yocto时将rust和cargo包安装为图像?

    我正在使用 5.15.72。 当我制作 imx 完整图像时,我尝试包括 rust 和 cargo知不知道怎么?
    发表于 05-09 07:10

    如何保证安全用电

    如何保证安全用电是电工实用技术丛书,本书结构合理、选材适当、文字精练、深入浅出,对如何保证安全用电作了系统全面的分析介绍。《如何保证
    发表于 11-09 14:27 0次下载
    如何<b class='flag-5'>保证</b><b class='flag-5'>安全</b>用电

    DDoS攻击是什么及如何保证安全

    对于针对移动应用的DDoS攻击 如何保证安全?
    的头像 发表于 08-27 08:45 3494次阅读

    cargo-offline命令解读

    。 项目链接:https://github.com/stuartZhang/cargo-offline 包仓库链接:https://crates.io/crates/cargo-offline 代码也精彩,真不是简单的
    的头像 发表于 12-01 15:41 723次阅读

    CARGO:改变您使用3D资产的方式

    今天我们发布了Cargo,这款软件将彻底改变您使用3D资产的方式。Cargo适用于Windows,开箱即用,可与Blender、Unreal、3dsMax 和Maya等3D软件一起使用。让我们解开
    的头像 发表于 06-26 10:08 641次阅读

    如何安装和使用cargo

    Cargo是Rust语言的包管理器和构建工具。它能够帮助我们管理依赖、构建项目、运行测试和发布程序等。在Rust社区中,Cargo已经成为了标准的构建工具,它为Rust的开发者提供了极大的便利
    的头像 发表于 09-20 11:28 700次阅读