首页 > 其他分享 >rust 中#[inline]

rust 中#[inline]

时间:2023-08-14 22:14:37浏览次数:32  
标签:函数 i32 add 编译器 内联 inline rust

在Rust中,#[inline]是一个属性(attribute),用于告诉编译器对函数进行内联展开。

内联展开是一种编译器优化技术,它将函数的代码直接嵌入到调用处,而不是通过函数调用的方式执行。这样做可以减少函数调用的开销,提高程序的执行效率,但也会增加代码的体积。

在Rust中,#[inline]属性可以应用于函数、方法和闭包。当一个函数被标记为#[inline]时,编译器会尝试在调用该函数的地方内联展开它。

以下是一个示例代码:

1 #[inline]
2 fn add(a: i32, b: i32) -> i32 {
3     a + b
4 }
5 
6 fn main() {
7     let result = add(1, 2);
8     println!("Result: {}", result);
9 }

在上面的例子中,add函数被标记为#[inline],这意味着编译器会尝试在调用add函数的地方内联展开它。

标签:函数,i32,add,编译器,内联,inline,rust
From: https://www.cnblogs.com/ucas123/p/17629898.html

相关文章

  • 【转】Rust anyhow & thiserror
    Rust 中使用 std::result::Result 表示可能出错的操作,成功的时候是 Ok(T),而出错的时候则是 Err(E):pubenumResult<T,E>{Ok(T),Err(E),}通常情况下,E 是实现 std::error::Error 的错误类型:pubtraitError:Debug+Display{fnsource(&self)->......
  • 《Rust编程之道》学习笔记一
    《Rust编程之道》学习笔记一序Rust语言的主要特点系统级语言无GC基于LLVM内存安全强类型+静态类型混合编程范式零成本抽象线程安全程序员的快乐何谓快乐?真正的快乐不仅仅是写代码时的“酸爽”,更应该是代码部署到生产环境之后的“安稳”。程序的三大定律程序必须......
  • 文盘Rust -- Mutex解决并发写文件乱序问题
    在实际开发过程中,我们可能会遇到并发写文件的场景,如果处理不当很可能出现文件内容乱序问题。下面我们通过一个示例程序描述这一过程并给出解决该问题的方法。usestd::{fs::{self,File,OpenOptions},io::{Write},sync::Arc,time::{SystemTime,UNIX_EPOCH}......
  • 试试用Rust为树莓派RP2040开发程序
    试试用Rust为树莓派RP2040开发程序实验环境树莓派Pico开发板DAPLINK调试器原工程链接:https://github.com/rp-rs/rp-hal-boards假设读者已经安装配置好了cargo环境1.安装配置获取工具链rustupselfupdaterustupupdatestablerustuptargetaddthumbv......
  • Python潮流周刊#2:Rust 让 Python 再次伟大
    这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(本期标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)文章&教程1、Python修饰器的函数式编程介绍了装饰器的实现原理、带参装饰器、多装饰器、类装饰器和几个典型的示例。文章发布于2014年,代码用......
  • 详解inline-block
    曾几何时,display:inline-block已经深入「大街小巷」,随处可见「display:inline-block;*display:inline;*zoom:1;」这样的代码。如今现代浏览器已经全面支持这个属性值了,上面的代码只是为了兼容IE6、7而已。那么你真的了解inline-block了吗?本文将带你深入剖析该属性值的前世......
  • 【八股文 03】extern、static、this、inline、volatile 关键字
    0概览以下为概览,如果看到问题都能基本想到答案,则不需要看正文中详细的内容extern作用static作用修饰变量局部变量全局变量类成员变量修饰函数普通函数类成员函数this指针this指针的类型为?在常函数里this指针的类型为?inline内联函数的特点与......
  • vscode 运行Rust cargo test时显示log输出
    使用以下tasks.json对于log库的输出(info,debug,warn...)需要在test方法上一行加#[test_log::test](来自test-loghttps://crates.io/crates/test-log){"version":"2.0.0","tasks":[{"type":"shell&quo......
  • Rust交叉编译为Android库
    Rust目前在互联网上资料较少,经过几天的折腾,终于在Windows10和GithubActions(Ubuntu)上构建出了armv7和armv8的.so文件。关于JNI的配置见:【Rust实现JNI】https://juejin.cn/post/7092750468631740452交叉编译需要AndroidNDK,我目前使用的是android-ndk-r25c......
  • xposed优秀模块列表 --- trustmealready
    https://repo.xposed.info/module/com.virb3.trustmealready一个Xposed模块,使用MattiaVinci提供的出色技术在Android上禁用SSL验证和固定。效果是系统范围的。适用于各种安全审计。 作者: ViRb3支持/讨论网址: https://github.com/ViRb3/TrustMeAlready源代码网址: https......