我找到了Can I mark a function as deprecated?并用在我自己的箱子里:

pub enum FooParams {
    #[deprecated(since = "0.0.1", note = "use `FooParams::New` instead")]
    Old,
    New,
}

pub struct Foo;

impl Foo {
    pub fn new(p: FooParams) -> Foo {
        match p {
            FooParams::Old => {}
            FooParams::New => {}
        }
        Foo
    }
}

这适用于外部板条箱,并警告它们不要使用FooParams::Old
它也适用于我的板条箱,产生恼人的警告。有什么方法可以禁用此警告吗?
我试过了,但警告仍然存在:
#[allow(deprecated)]
FooParams::Old => {}

最佳答案

可以将属性移动到match语句:

impl Foo {
    pub fn new(p: FooParams) -> Foo {
        #[allow(deprecated)]
        match p {
            FooParams::Old => {}
            FooParams::New => {}
        }
    }
}

您的板条箱中Old的其他用法将继续发出警告。

07-25 20:26