本文简要介绍rust语言中 Macro std::unimplemented
的用法。
用法
macro_rules! unimplemented {
() => { ... };
($($arg : tt) +) => { ... };
}
通过使用 “not implemented” 消息Panics来指示未实现的代码。
这允许您的代码使用type-check,如果您正在原型设计或实现需要多个您不打算全部使用的方法的特征,这将非常有用。
unimplemented!
和 todo!
之间的区别在于,虽然 todo!
传达了稍后实现函数的意图并且消息是 “not yet implemented”,但 unimplemented!
没有这样的声明。它的消息是“not implemented”。还有一些 IDE 会标记 todo!
。
Panics
这将始终是 panic!
,因为unimplemented!
只是panic!
的简写,带有固定的特定消息。
与 panic!
一样,此宏具有用于显示自定义值的第二种形式。
例子
假设我们有一个特征 Foo
:
trait Foo {
fn bar(&self) -> u8;
fn baz(&self);
fn qux(&self) -> Result<u64, ()>;
}
我们想为'MyStruct' 实现Foo
,但由于某种原因,只实现bar()
函数才有意义。 baz()
和 qux()
仍然需要在 Foo
的实现中定义,但我们可以在它们的定义中使用 unimplemented!
以允许我们的代码编译。
如果达到未实现的方法,我们仍然希望程序停止运行。
struct MyStruct;
impl Foo for MyStruct {
fn bar(&self) -> u8 {
1 + 1
}
fn baz(&self) {
// It makes no sense to `baz` a `MyStruct`, so we have no logic here
// at all.
// This will display "thread 'main' panicked at 'not implemented'".
unimplemented!();
}
fn qux(&self) -> Result<u64, ()> {
// We have some logic here,
// We can add a message to unimplemented! to display our omission.
// This will display:
// "thread 'main' panicked at 'not implemented: MyStruct isn't quxable'".
unimplemented!("MyStruct isn't quxable");
}
}
fn main() {
let s = MyStruct;
s.bar();
}
相关用法
- Rust unit用法及代码示例
- Rust unreachable_unchecked用法及代码示例
- Rust unreachable用法及代码示例
- Rust u128.checked_pow用法及代码示例
- Rust usize.wrapping_mul用法及代码示例
- Rust u8.rotate_left用法及代码示例
- Rust u64.rotate_right用法及代码示例
- Rust u16.saturating_add用法及代码示例
- Rust u128.borrowing_sub用法及代码示例
- Rust u64.overflowing_mul用法及代码示例
- Rust usize.wrapping_neg用法及代码示例
- Rust u32.saturating_sub用法及代码示例
- Rust u32.unstable_next_multiple_of用法及代码示例
- Rust u8.pow用法及代码示例
- Rust u128.to_be用法及代码示例
- Rust u32.wrapping_pow用法及代码示例
- Rust u64.log用法及代码示例
- Rust u32.checked_neg用法及代码示例
- Rust usize.checked_div用法及代码示例
- Rust u64.overflowing_sub用法及代码示例
- Rust u16.rem_euclid用法及代码示例
- Rust u32.overflowing_add用法及代码示例
- Rust usize.saturating_pow用法及代码示例
- Rust u8.is_ascii_whitespace用法及代码示例
- Rust u64.carrying_mul用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro std::unimplemented。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。