proc-macro-workshop:sorted-4

godme發表於2022-07-06
// This test is similar to the previous where want to ensure that the macro
// correctly generates an error when the input enum is out of order, but this
// time it is using an enum that also has data associated with each variant.

use sorted::sorted;

use std::env::VarError;
use std::error::Error as StdError;
use std::fmt;
use std::io;
use std::str::Utf8Error;

#[sorted]
pub enum Error {
    Fmt(fmt::Error),
    Io(io::Error),
    Utf8(Utf8Error),
    Var(VarError),
    Dyn(Box<dyn StdError>),
}

fn main() {}

提示已經說了,和前一題類似,只是攜帶了結構體。
可能是因為我們懶,也許是因為我們有前瞻,我們並沒有解析額外更多的東西。
直接使用的是&i.ident,因此並不涉及攜帶的其他資訊,所以剛好能夠解題。

error: Dyn should sort before Fmt
  --> tests/04-variants-with-data.rs:19:5
   |
19 |     Dyn(Box<dyn StdError>),
   |     ^^^

也算瞎貓碰上死耗子?

本作品採用《CC 協議》,轉載必須註明作者和本文連結