diff --git a/blog/rust_todo.md b/blog/rust_todo.md new file mode 100644 index 0000000..6a8fe5d --- /dev/null +++ b/blog/rust_todo.md @@ -0,0 +1,44 @@ +--- +title: "Rust: todo! macro" +author: "James Pace" +date: "2024/01/21" +--- + +One of the features of Rust that I've found really helpful when getting started +on a project is the `todo!` macro. + +The `todo!` macro tells the compiler that you know that some section of code +isn't complete yet and that it should compile the rest of it anyway. + +An example of where I've used this is when I get started on a project I like protoyping +out the signatures for the primary functions I think I'm going to need before I start +implemententing them. +For example, if I'm working on functions that do math operations on a custom type, +I'll start by thinking about what functions I need and what their signatures are +going to be, type that out, and then fill them in. +With `todo!`, that means I may type out something like: +```rust +struct Point { + pub x: f32, + pub y: f32, + pub z: f32, +} +impl Point { + pub fn add(&self, other: &Point) -> Point { + todo!() + } + + pub fn subtract(&self, other: &Point) -> Point { + todo!() + } +} +``` +and that compiles, as long as there are not other mistakes. + +The reason that's useful is let's say I made a mistake and type `Pint` +instead of `Point` somewhere. +I can build the code, have the compiler point that out, and fix it +before needing to implement everything. + +The official documentation about `todo!` can be found +[here](https://doc.rust-lang.org/std/macro.todo.html).