Adapt todo!
documentation to mention displaying custom values
Correct hidden trait in doc test
This commit is contained in:
parent
e0d7ed1f45
commit
f96cfb533a
@ -719,7 +719,8 @@ macro_rules! unreachable {
|
||||
/// The difference between `unimplemented!` and [`todo!`] is that while `todo!`
|
||||
/// conveys an intent of implementing the functionality later and the message is "not yet
|
||||
/// implemented", `unimplemented!` makes no such claims. Its message is "not implemented".
|
||||
/// Also some IDEs will mark `todo!`s.
|
||||
///
|
||||
/// Also, some IDEs will mark `todo!`s.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
@ -805,50 +806,63 @@ macro_rules! unimplemented {
|
||||
/// The difference between [`unimplemented!`] and `todo!` is that while `todo!` conveys
|
||||
/// an intent of implementing the functionality later and the message is "not yet
|
||||
/// implemented", `unimplemented!` makes no such claims. Its message is "not implemented".
|
||||
/// Also some IDEs will mark `todo!`s.
|
||||
///
|
||||
/// Also, some IDEs will mark `todo!`s.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// This will always [`panic!`].
|
||||
/// This will always [`panic!`] because `todo!` is just a shorthand for `panic!` with a
|
||||
/// fixed, specific message.
|
||||
///
|
||||
/// Like `panic!`, this macro has a second form for displaying custom values.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Here's an example of some in-progress code. We have a trait `Foo`:
|
||||
///
|
||||
/// ```
|
||||
/// trait Foo {
|
||||
/// fn bar(&self);
|
||||
/// fn bar(&self) -> u8;
|
||||
/// fn baz(&self);
|
||||
/// fn qux(&self) -> Result<u64, ()>;
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// We want to implement `Foo` on one of our types, but we also want to work on
|
||||
/// just `bar()` first. In order for our code to compile, we need to implement
|
||||
/// `baz()`, so we can use `todo!`:
|
||||
/// `baz()` and `qux()`, so we can use `todo!`:
|
||||
///
|
||||
/// ```
|
||||
/// # trait Foo {
|
||||
/// # fn bar(&self);
|
||||
/// # fn bar(&self) -> u8;
|
||||
/// # fn baz(&self);
|
||||
/// # fn qux(&self) -> Result<u64, ()>;
|
||||
/// # }
|
||||
/// struct MyStruct;
|
||||
///
|
||||
/// impl Foo for MyStruct {
|
||||
/// fn bar(&self) {
|
||||
/// // implementation goes here
|
||||
/// fn bar(&self) -> u8 {
|
||||
/// 1 + 1
|
||||
/// }
|
||||
///
|
||||
/// fn baz(&self) {
|
||||
/// // let's not worry about implementing baz() for now
|
||||
/// // Let's not worry about implementing baz() for now
|
||||
/// todo!();
|
||||
/// }
|
||||
///
|
||||
/// fn qux(&self) -> Result<u64, ()> {
|
||||
/// // We can add a message to todo! to display our omission.
|
||||
/// // This will display:
|
||||
/// // "thread 'main' panicked at 'not yet implemented: MyStruct is not yet quxable'".
|
||||
/// todo!("MyStruct is not yet quxable");
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// fn main() {
|
||||
/// let s = MyStruct;
|
||||
/// s.bar();
|
||||
///
|
||||
/// // we aren't even using baz(), so this is fine.
|
||||
/// // We aren't even using baz() or qux(), so this is fine.
|
||||
/// }
|
||||
/// ```
|
||||
#[macro_export]
|
||||
|
Loading…
Reference in New Issue
Block a user