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

登陆网站怎么做大连网站快速建设推荐

登陆网站怎么做,大连网站快速建设推荐,中国十大营销策划机构,wordpress 链接打不开本人rust萌新#xff0c;写web碰到了这个#xff0c;基于ChatGPT和文心一言学了宏#xff0c;强行把这玩意实现出来了#xff0c;做个学习记录#xff0c;如果有更好的方法#xff0c;勿喷。 先看效果#xff0c;注意不支持嵌套#xff0c;且kv映射要用(因为它这个…本人rust萌新写web碰到了这个基于ChatGPT和文心一言学了宏强行把这玩意实现出来了做个学习记录如果有更好的方法勿喷。 先看效果注意不支持嵌套且kv映射要用(因为它这个只支持用箭头)即在这个宏语法内只支持单层kv但是你可以传value为HashMap。 对此我曾尝试用#[proc_macro]的TokenStream拿到变量名和值的方式实现正常使用花括号和冒号和深层字典但是太菜了搞不会。 如果能基于我的想法实现出深层kv欢迎评论区分享。 //第一个变量是msg后面的全部存入data{key1:...,key2:...} success!(success,key1 vec![1,2,3,4,5],key2 qwer,key3String::from(value) );//第一个变量没了就是默认空msg后面的全部存入data{key1:...,key2:...} success!(keyqwer,key21324, );fail!同理 rust中实现统一返回类有点麻烦比如我想返回固定格式 {success:true,msg:登录成功,data:{id:15,name:qwer} }我目前用的是actix-web虽然支持直接传入结构体对象作为json返回值但我有时候想对于data进行灵活的处理不想建那么多结构体 这里我基于serde_json的json!进行进一步封装 这里一个宏里面写两个形式因为要匹配传入msg和不传入msg的两种情形。最后一个$(,)?是允许最后一个多余的逗号换行时好看一点 // 随便找个文件放 // 用了#[macro_export]的宏会直接放在crate下//下面三个库需要在使用下面宏的地方进行use此处use没用 // use actix_web::web; // use serde_json::json; // use std::collections::HashMap;#[macro_export] macro_rules! success {// 没有msg的情况($($key:expr $value:expr),* $(,)?) {{let mut resp HashMap::new();resp.insert(success, json!(true));resp.insert(msg, json!()); // 提供一个默认的消息let mut data:HashMapString,Value HashMap::new();$(data.insert($key, json!($value));)*resp.insert(data,json!(data));web::Json(json!(resp))}};// 有msg的情况($msg:expr, $($key:expr $value:expr),* $(,)?) {{let mut resp HashMap::new();resp.insert(success, json!(true));resp.insert(msg, json!($msg)); // 提供一个默认的消息let mut data:HashMapString,Value HashMap::new();$(data.insert($key, json!($value));)*resp.insert(data,json!(data));web::Json(json!(resp))}}; }#[macro_export] macro_rules! fail {// 没有$msg的情况($($key:expr $value:expr),* $(,)?) {{let mut resp HashMap::new();resp.insert(success, json!(false));resp.insert(msg, json!());let mut data:HashMapString,Value HashMap::new();$(data.insert($key, json!($value));)*resp.insert(data,data);web::Json(json!(resp))}};// 有$msg的情况($msg:expr, $($key:expr $value:expr),* $(,)?) {{let mut resp HashMap::new();resp.insert(success, json!(false));resp.insert(msg, json!($msg));let mut data:HashMapString,Value HashMap::new();$(data.insert($key, json!($value));)*resp.insert(data,json!(data));web::Json(json!(resp))}}; }注意过程宏需要定义在一个单独的crate中主要是因为过程宏是一段在编译crate前对其代码进行加工的代码而这段是需要在编译后执行的。若是将定义过程宏和使用过程宏放到同一个crate中就会陷入编译“死锁” 另一个文件对其进行调用 // 注意是在crate下面的 use crate::success; use actix_web::{get,web::{self, Json}, }; use serde_json::{json, Value}; use std::collections::HashMap;#[get(/login)] async fn login() - JsonValue {let resp success!(success,key1 vec![1,2,3,4,5],key2 qwer,key3String::from(value));resp }我理解的这个宏就是字符串替换因为他是编译阶段处理的所以宏所在rs文件的use是无效的即使用了宏的文件需要对于宏使用的第三方库进行use这个有点恶心问题不大。
http://www.w-s-a.com/news/207560/

相关文章:

  • 吴江公司网站建设电话免费的那种软件
  • 大淘客网站如何做seo网络广告设计公司
  • 厦门网络营销顾问湘潭网站seo
  • asp.net个人网站淮南 搭建一个企业展示网站
  • 备案关闭网站wordpress 替换
  • 台州建设网站制作wordpress乱码
  • 互联网时代 网站建设做交互设计的网站
  • 网站屏蔽中文浏览器湘潭做网站广告的公司
  • 好看的单页面网站模板免费下载手机网站经典案例
  • 优秀网站建设平台建筑模板工厂价格尺寸
  • 合肥微信网站建设旅游景区网站模板
  • 一个只做百合的网站wordpress文章和博客的区别
  • 编写网站策划方案网站哪里有
  • 网站做得好的公司国家防疫政策最新调整
  • 设计优秀的企业网站做行测的网站
  • 提供做网站公司有哪些关键词优化诊断
  • 建站合肥网络公司seo免费建手机商城网站吗
  • 设计师投资做项目网站外贸网站建设工作室
  • 无聊的网站wordpress的alt属性插件
  • 个股期权系统网站开发小清新wordpress模板
  • 全中文网站开发建筑公司企业愿景文案
  • 广州网站建设正规公司建设银行信用卡中心网站
  • 哪个网站是专门做封面素材怎么制作app平台
  • 网站开发 平均工资商标注册在哪个部门申请
  • 做外贸需要自己的网站吗营销型网站建设市场分析
  • 绍兴网站制作推广wordpress 无法自动升级
  • 阿里云建站数据库用什么app制作开发费用多少
  • 中国住房和城乡建设部网站资质查询中小开网站
  • 交易所网站开发水果营销软文
  • 石家庄有什么好玩的地方2017织梦网站怎么做seo