当前位置: 首页 > news >正文

网站解析 cname网站快速建设入门教程

网站解析 cname,网站快速建设入门教程,天津seo网络营销,wordpress自定义文章页面模板下载rust学习-宏的定义与使用 声明宏#xff08;macro_rules! 宏#xff09;使用方式1. 简单的宏2. 带参数的宏3. 多个模式的宏 过程宏1. 定义过程宏1.1 属性宏1.2 函数宏1.3 派生宏 2. 使用过程宏2.1 属性宏2.2 函数宏2.3 派生宏 在 Rust 中#xff0c;宏#xff08;macromacro_rules! 宏使用方式1. 简单的宏2. 带参数的宏3. 多个模式的宏 过程宏1. 定义过程宏1.1 属性宏1.2 函数宏1.3 派生宏 2. 使用过程宏2.1 属性宏2.2 函数宏2.3 派生宏 在 Rust 中宏macro是一种在编译期间生成代码的机制宏可以以更加灵活和高效的方式编写代码Rust中有两种主要的宏声明宏macro_rules! 宏和过程宏procedural macros 声明宏macro_rules! 宏 声明宏是使用 macro_rules! 关键字定义 macro_rules! 宏名 {($($pattern:pat) $body:expr);($($pattern:pat) $body:expr);// 更多模式... }使用方式 1. 简单的宏 示例一个用于打印消息的宏 macro_rules! say_hello {() {println!(Hello, world!);}; }fn main() {say_hello!(); }2. 带参数的宏 定义一个带参数的宏用于打印带参数的消息 macro_rules! say_hello_to {($name:expr) {println!(Hello, {}!, $name);}; }fn main() {say_hello_to!(XiaoMing); }3. 多个模式的宏 定义一个宏支持多种模式 macro_rules! math {($x:expr, , $y:expr) {$x $y};($x:expr, -, $y:expr) {$x - $y}; }fn main() {let result1 math!(10, , 5);let result2 math!(10, -, 5);println!(10 5 {}, result1); // 输出: 10 5 15println!(10 - 5 {}, result2); // 输出: 10 - 5 5 }过程宏 1. 定义过程宏 过程宏需要一个特殊的 crate 类型并且需要使用 proc_macro 库常见的过程宏有属性宏attribute-like macros、函数宏function-like macros和派生宏derive macros 1.1 属性宏 属性宏用于在代码上添加属性通常用于生成额外的代码或修改现有的代码 use proc_macro; use proc_macro2::TokenStream; use quote::quote; use syn;#[proc_macro_attribute] pub fn my_attribute(_attr: TokenStream, item: TokenStream) - TokenStream {let ast syn::parse_macro_input!(item as syn::ItemFn);let ident ast.sig.ident;let expanded quote! {fn #ident() {println!(Before function call);#astprintln!(After function call);}};expanded.into() }1.2 函数宏 函数宏类似于传统的宏但可以在编译时生成更复杂的代码 extern crate proc_macro;use proc_macro::TokenStream; use quote::quote; use syn::{parse_macro_input, ItemFn};#[proc_macro] pub fn my_function(input: TokenStream) - TokenStream {let input parse_macro_input!(input as ItemFn);let name input.sig.ident;let expanded quote! {fn #name() {println!(This is a generated function);}};expanded.into() }1.3 派生宏 派生宏用于为结构体或枚举生成派生的实现 extern crate proc_macro;use proc_macro::TokenStream; use quote::quote; use syn::{parse_macro_input, DeriveInput};#[proc_macro_derive(MyTrait)] pub fn my_trait_derive(input: TokenStream) - TokenStream {let input parse_macro_input!(input as DeriveInput);let name input.ident;let expanded quote! {impl MyTrait for #name {fn my_method(self) {println!(This is a derived method for {}, stringify!(#name));}}};expanded.into() }2. 使用过程宏 使用过程宏需要在 Cargo.toml 中声明依赖并在代码中使用宏 2.1 属性宏 #[my_attribute] fn my_function() {println!(Inside my function); }fn main() {my_function(); }2.2 函数宏 my_function! {fn my_generated_function() {println!(Inside generated function);} }fn main() {my_generated_function(); }2.3 派生宏 #[derive(MyTrait)] struct MyStruct;trait MyTrait {fn my_method(self); }fn main() {let my_struct MyStruct;my_struct.my_method(); }
http://www.hkea.cn/news/14529395/

相关文章:

  • 扫二维码做自己网站wordpress 3.1.3
  • 简洁手机导航网站模板下载安装服务器怎么租用
  • 有哪些网站或者公司招募做视频的营销型网站怎么收费标准
  • 手机网站加速器软件发布流程
  • 网站建设心得体会及总结网站建设与管理吴振峰ppt
  • 百度网站地图生成器青岛seo网站排名
  • 做网站的是什么工种wordpress注册模板下载
  • 安全的网站3322动态域名官网
  • 学习网站的建设郑州微网站建设公司
  • 可以申请免费的个人网站吗桐庐县住房和城乡建设局网站
  • 个人博客网站开发建设银行招生网站
  • 做课件ppt网站潜江网站建设
  • 企业网站备案审核需要多长时间湖北工业信息化网站备案
  • 青岛工程建设监理公司网站外贸平台有哪些是免费的
  • 网站添加标签云网线制作评分标准
  • 个人做公司网站校园二手市场网站建设方案
  • 商城网站建设制作wordpress 多久
  • 描述网站建设的具体流程沈阳网站建设公司哪家好
  • 常州模板网站建设价位数字展厅网站建设
  • 优秀网站设计欣赏网络营销推广体系
  • 永久免费网站空间wordpress企业主题餐饮
  • 青海建设局网站微信公众号登录二维码
  • 织梦网站修改使用教程网站三大标签设置
  • 影楼网站源码网页设计与网站建设试题及答案
  • 网站建设主要流程图网站开发实验室建设方案
  • 成都网站建设公私密浏览器在线看
  • 网站设计与制作培训班重庆网络营销渠道
  • 中山中小企业网站建设用html制作登录注册界面
  • 东莞网站制作十年乐云seo永康做网站的
  • 网站建设项目招标公告珠海网络公司有哪些