# wip -- The crate you'll never put into production
[](#License)
[](https://crates.io/crates/wip)
[](https://docs.rs/wip)
[](https://deps.rs/repo/codeberg/dureuill/wip)
`wip` helps you during Rust development by helping signal when something is unfinished.
It plays a role similar to the [`std::todo`](https://doc.rust-lang.org/std/macro.todo.html) macro, but emits warning on use, so that a proper CI blocks uses of this crate from reaching production.

# What's inside?
- [`wip`](https://docs.rs/wip/latest/wip/trait.WipOptionExt.html#tymethod.wip) extension methods for `Result` and `Option`.
They function like [`unwrap`](https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap) but emit warnings on use, so that you remember to remove them before merging that PR!
- [`clone_fixme`](https://docs.rs/wip/latest/wip/trait.WipCloneExt.html#tymethod.clone_fixme) extension method for any clonable object, for clones that you might later regret, via [`WipCloneExt::clone_fixme`].
- [`wip!()`](https://docs.rs/wip/latest/wip/macro.wip.html) macros that emit warnings and work with iterators ([`wip_iter!`](https://docs.rs/wip/latest/wip/macro.wip_iter.html)) and futures ([`wip_future!`](https://docs.rs/wip/latest/wip/macro.wip_future.html), you guessed it)
- A [`fixme()`](https://docs.rs/wip/latest/wip/macro.fixme.html) macro that doesn't panic like [`wip!`](https://docs.rs/wip/latest/wip/macro.wip.html), but still emit a warning, to keep track of all these `// FIXME: handle edge case` in your code...
# How to use?
1. Add the crate to your dependencies.
```sh
cargo add wip
```
2. (optional)
glob import the prelude in your files: `use wip::prelude::*;`
with the one from this crate.
```rust
use wip::prelude::*;
```
3. Profit!
This crate relies on deprecation warnings, so make sure you don't `#![allow(deprecated)]`, lest it won't warn you as intended.
# Alternatives
I don't currently know of crates exposing the same functionality.
However, if you don't like the idea of adding a dependency for this,
did you know you could use doc comments over expressions to benefit from a free warning?
```norust
unused doc comment
use `//` for a plain comment
`#[warn(unused_doc_comments)]` on by default
```
# No genAI
This crate does not use any genAI tooling and intends on staying so.