45 lines
1.4 KiB
Markdown
45 lines
1.4 KiB
Markdown
---
|
|
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).
|