summaryrefslogtreecommitdiffstats
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorAlice Ryhl <alice@ryhl.io>2020-03-15 13:02:39 +0100
committerGitHub <noreply@github.com>2020-03-15 13:02:39 +0100
commitfce6845f2b2165c6835b0b9de8d6728da387ad79 (patch)
tree820a32ecb0f3f1eb82b3fea9adbc06e77315eb8b /CONTRIBUTING.md
parent826fc21abfd04779cde92e4cc33de2adb42cf327 (diff)
Document common cargo commands (#2293)
* Document common cargo commands * Add loom command
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md33
1 files changed, 33 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4e1a6956..0aa58273 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -112,6 +112,39 @@ usually a good idea to first open an issue describing the change to solicit
feedback and guidance. This will increase the likelihood of the PR getting
merged.
+### Cargo Commands
+
+Due to the extensive use of features in Tokio, you will often need to add extra
+arguments to many common cargo commands. This section lists some commonly needed
+commands.
+
+Some commands just need the `--all-features` argument:
+```
+cargo build --all-features
+cargo check --all-features
+cargo test --all-features
+```
+When building documentation normally, the markers that list the features
+required for various parts of Tokio are missing. To build the documentation
+correctly, use this command:
+```
+RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features
+```
+The `cargo fmt` command does not work on the Tokio codebase. You can use the
+command below instead:
+```
+rustfmt --check --edition 2018 $(find . -name '*.rs' -print)
+```
+The `--check` argument prints the things that need to be fixed. If you remove
+it, `rustfmt` will update your files locally instead.
+
+You can run loom tests with
+```
+cd tokio # tokio crate in workspace
+LOOM_MAX_PREEMPTIONS=1 RUSTFLAGS="--cfg loom" \
+ cargo test --lib --release --features full -- --test-threads=1 --nocapture
+```
+
### Tests
If the change being proposed alters code (as opposed to only documentation for