V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
5261
V2EX  ›  Rust

看到这样的 rust 代码要懵逼了,不知道咋入手,求指导

  •  
  •   5261 · 14 天前 · 1049 次点击
    pub async fn list(
        State(state): State<ArcAppState>,
        Query(frm): Query<form::subject::ListForAdmin>,
    ) -> Result<resp::JsonResp<model::subject::SubjectPaginate>> {
        let handler_name = "admin/subject/list";
        let p = get_pool(&state);
        let subjects = model::subject::Subject::list(
            &*p,
            &model::subject::SubjectListFilter {
                pq: model::subject::SubjectPaginateReq {
                    page: frm.pq.page(),
                    page_size: frm.pq.page_size(),
                },
                order: None,
                is_del: frm.is_del(),
                status: frm.status,
                name: frm.name,
                slug: frm.slug,
            },
        )
        .await
        .map_err(Error::from)
        .map_err(log_error(handler_name))?;
        Ok(resp::ok(subjects))
    }
    
    
    #[derive(Debug, Default, Deserialize, Serialize, sqlx::FromRow, Db)]
    #[db(table = subjects, pk = id, del_field = is_del)]
    pub struct Subject {
        #[db(find)]
        #[db(skip_update)]
        pub id: String,
    
        #[db(list_opt)]
        #[db(list_opt_like)]
        pub name: String,
    
        #[db(find)]
        #[db(exists)]
        #[db(list_opt)]
        #[db(list_opt_like)]
        pub slug: String,
    
        pub summary: String,
    
        #[db(find_opt)]
        #[db(list_opt)]
        pub is_del: bool,
        pub cover: String,
    
        #[db(list_opt)]
        pub status: Status,
    
        pub price: Decimal,
        pub pin: i32,
    }
    

    作为 Java 开发,看到这个 list 方法本能的想跳转过去看下这个 model::subject::Subject::list 方法的实现咋写的,但是跳转过去是宏? 那我咋知道最后是咋写的呢?

    实在是懵逼~

    4 条回复    2025-04-11 14:38:16 +08:00
    zizon
        1
    zizon  
       14 天前
    你们 mybatis/spring 不最喜欢干这种事么?
    lait
        2
    lait  
       14 天前
    使用宏展开指令,就能看到最终的实现了,具体指令自己搜搜哈,不知道现在 VS Code 有相应的插件可以一键宏展开没有
    5261
        3
    5261  
    OP
       14 天前
    @zizon 啥啊,mybatis 、spring 也至少能看到的具体的实现啊,这宏定义没办法 编译器生成之后的代码啊
    5261
        4
    5261  
    OP
       14 天前
    @zizon 哥,我错了,刚去仔细看了下 宏的实现,确实是和 mybatis 的注解差不多,刚入 rust ,这宏看的我是真吃力
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 23:03 · PVG 07:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.