RUST网络客户端的基本技术说明-宏库

一、常用过程宏库

一般来说,一个好的语言一定会提供一些强大的基础库,如C和C++,都有标准的库,这些库久经风雨。而Rust做为一门新语言,当然也必须有,同时,如果能发展一批第三方或者说爱好者提供的强有力的库,那么整个生态的建设也会迅速的展开,保证语言快速的向外溢出。比如c++的Boost库就号称标准库的预备队。第三方的库也是比比皆是。
对于宏编程,Rust中提供了几种过程宏的库操作支持,这个在前面提到过,即:
1、Syn
它是基于TokenStream的一种语法分析过程,它并不很强大,需要自定义扩展一些宏,比如Rust中的函数和闭包等。
2、Quote
应用比较简单,适合使用。
3、proc_macro2
更好的proc_macro更方便的接口,能和syn、quote一起更好的配合应用。

二、具体库的应用

下面看一下具体的实例应用:
1、Syn

//库配置
[dependencies]
syn = "1.0"
quote = "1.0"

[lib]
proc-macro = true
//代码
use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, DeriveInput};

#[proc_macro_derive(MyMacro)]
pub fn my_macro(input: TokenStream) -> TokenStream {
    // Parse the input tokens into a syntax tree
    let input = parse_macro_input!(input as DeriveInput);

    // Build the output, possibly using quasi-quotation
    let expanded = quote! {
        // ...
    };

    // Hand the output tokens back to the compiler
    TokenStream::from(expanded)
}

2、Quote

let type_definition = quote! {...};
let methods = quote! {...};

let tokens = quote! {
    #type_definition
    #methods
};

3、proc_macro2

extern crate proc_macro;

#[proc_macro_derive(MyDerive)]
pub fn my_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let input = proc_macro2::TokenStream::from(input);

    let output: proc_macro2::TokenStream = {
        /* transform input */
    };

    proc_macro::TokenStream::from(output)
}

更多的详情可查看:
https://docs.rs/proc-macro2/1.0.30/proc_macro2/#structs

*记得要在配置文件中增加库的依赖啊!

三、总结

麻烦的不是Rust难或者学习曲线陡峭,麻烦的是没地方应用,技术型公司太少,大多数的公司对新技术的应用都持有观望的态度,除非能显著的提高开发的效率,否则想要引进一个新语言,新技术,全靠技术负责人的热情和相关人员的努力!
努力吧,归来的少年!
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值