对外部用户弃用,但允许我吗?

时间:2017-09-01 20:47:00

标签: rust

我找到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 => {}

1 个答案:

答案 0 :(得分:3)

您可以将属性移动到匹配语句:

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

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