macro_rules! todo { () => { ... }; ($($arg:tt)+) => { ... }; }
Indicates unfinished code.
This can be useful if you are prototyping and are just looking to have your code typecheck.
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.
This will always panic!
Here's an example of some in-progress code. We have a trait Foo
:
trait Foo { fn bar(&self); fn baz(&self); }
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!
:
struct MyStruct; impl Foo for MyStruct { fn bar(&self) { // implementation goes here } fn baz(&self) { // let's not worry about implementing baz() for now todo!(); } } fn main() { let s = MyStruct; s.bar(); // we aren't even using baz(), so this is fine. }
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/macro.todo.html