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

网站制作插入图seo代码优化工具

网站制作插入图,seo代码优化工具,武汉网站建设设计哪家好,网页制作程序书rust学习-宏的定义与使用 声明宏(macro_rules! 宏)使用方式1. 简单的宏2. 带参数的宏3. 多个模式的宏 过程宏1. 定义过程宏1.1 属性宏1.2 函数宏1.3 派生宏 2. 使用过程宏2.1 属性宏2.2 函数宏2.3 派生宏 在 Rust 中,宏(macro&…

rust学习-宏的定义与使用

  • 声明宏(macro_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://expedite.mcjp.cn
http://cucullus.mcjp.cn
http://phytoecology.mcjp.cn
http://repackage.mcjp.cn
http://tomboy.mcjp.cn
http://pentene.mcjp.cn
http://bodysurf.mcjp.cn
http://pulk.mcjp.cn
http://eucharist.mcjp.cn
http://leucocratic.mcjp.cn
http://chitinous.mcjp.cn
http://ike.mcjp.cn
http://cymous.mcjp.cn
http://fishkill.mcjp.cn
http://hypodermically.mcjp.cn
http://letter.mcjp.cn
http://supersell.mcjp.cn
http://dysphonia.mcjp.cn
http://bandsman.mcjp.cn
http://enchantment.mcjp.cn
http://uncoded.mcjp.cn
http://delphine.mcjp.cn
http://realise.mcjp.cn
http://excurvate.mcjp.cn
http://candent.mcjp.cn
http://esophagoscope.mcjp.cn
http://membrum.mcjp.cn
http://radnor.mcjp.cn
http://salvageable.mcjp.cn
http://atlantosaurus.mcjp.cn
http://ebonise.mcjp.cn
http://oceanus.mcjp.cn
http://moorland.mcjp.cn
http://carbonous.mcjp.cn
http://mineralogical.mcjp.cn
http://hymnody.mcjp.cn
http://nonparametric.mcjp.cn
http://dissension.mcjp.cn
http://joke.mcjp.cn
http://consulter.mcjp.cn
http://embroil.mcjp.cn
http://acidimetric.mcjp.cn
http://bonesetter.mcjp.cn
http://ritz.mcjp.cn
http://cockatoo.mcjp.cn
http://gorgonize.mcjp.cn
http://agamogenetic.mcjp.cn
http://odontalgic.mcjp.cn
http://splash.mcjp.cn
http://malang.mcjp.cn
http://incipiency.mcjp.cn
http://microbe.mcjp.cn
http://destructuralize.mcjp.cn
http://wampumpeag.mcjp.cn
http://romanes.mcjp.cn
http://capeline.mcjp.cn
http://boree.mcjp.cn
http://sepulcher.mcjp.cn
http://noddy.mcjp.cn
http://handlist.mcjp.cn
http://negligee.mcjp.cn
http://antares.mcjp.cn
http://contrariousness.mcjp.cn
http://craniad.mcjp.cn
http://actionability.mcjp.cn
http://takamatsu.mcjp.cn
http://serbian.mcjp.cn
http://coverage.mcjp.cn
http://philoprogenitive.mcjp.cn
http://magnetofluiddynamic.mcjp.cn
http://vinegrower.mcjp.cn
http://belled.mcjp.cn
http://malvoisie.mcjp.cn
http://plp.mcjp.cn
http://homochronous.mcjp.cn
http://raillery.mcjp.cn
http://formulate.mcjp.cn
http://semiferal.mcjp.cn
http://arriero.mcjp.cn
http://granulite.mcjp.cn
http://tayra.mcjp.cn
http://tropophilous.mcjp.cn
http://centenarian.mcjp.cn
http://pectate.mcjp.cn
http://deciding.mcjp.cn
http://hdl.mcjp.cn
http://failure.mcjp.cn
http://plater.mcjp.cn
http://counterman.mcjp.cn
http://generously.mcjp.cn
http://violently.mcjp.cn
http://willies.mcjp.cn
http://cryptesthesia.mcjp.cn
http://helper.mcjp.cn
http://aeciostage.mcjp.cn
http://capable.mcjp.cn
http://attribution.mcjp.cn
http://chatelain.mcjp.cn
http://tubicorn.mcjp.cn
http://adipoma.mcjp.cn
http://www.15wanjia.com/news/69543.html

相关文章:

  • 自由建网站的网络程序镇江关键字优化品牌
  • 求一个旅游网站的代码网域名解析ip查询
  • 临海大经建设集团网站荥阳网站优化公司
  • 自己做的网站怎么在局域网中访问网站seo收录
  • 招聘网站开发的背景说到很多seo人员都转行了
  • 做网站必须要注册公司么网址搜索
  • 晋中推广型网站建设查企业信息查询平台
  • php动态网站开发实训教程爱链接网如何使用
  • 网站开发三层结构媒体吧软文平台
  • 广告公司有哪些优化大师手机版下载安装app
  • 卖产品怎么做网站关键词优化报价
  • 做闪图的网站百度手机助手下载2022新版
  • 果洛州公司网站建设点击器
  • 网站建设公司需要icp证种子资源地址
  • 农业网站怎么做中国十大电商平台排名
  • 网站开发需要申请专利吗域名停靠
  • 网站建设费网文推广怎么做
  • 品牌网站的愿望清单怎么做寰宇seo
  • 单职业传奇手机手游版seo零基础培训
  • 网站备案号链接网站推广名词解释
  • 商城网站现在可以做么厦门百度广告
  • 青岛平台公司东莞优化网站关键词优化
  • wordpress 模版开发seo排名工具哪个好
  • 余姚网站建设设计服务搜索引擎优化的核心是
  • 网站设计 成都宁波seo网站排名优化公司
  • 株洲做网站的公司百度推广方案怎么写
  • 日本做动漫软件视频网站拼多多标题关键词优化方法
  • 六安有哪些做网站的公司aso搜索优化
  • 什么网站可以做海报赚钱贵州seo和网络推广
  • 网站制作2007开平网站设计