mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-04-26 09:12:58 +02:00
Add a brief mention of doc comments (#509)
This commit is contained in:
parent
365795f9cd
commit
3b538b582d
@ -32,6 +32,7 @@
|
|||||||
- [Slices](basic-syntax/slices.md)
|
- [Slices](basic-syntax/slices.md)
|
||||||
- [String vs str](basic-syntax/string-slices.md)
|
- [String vs str](basic-syntax/string-slices.md)
|
||||||
- [Functions](basic-syntax/functions.md)
|
- [Functions](basic-syntax/functions.md)
|
||||||
|
- [Rustdoc](basic-syntax/rustdoc.md)
|
||||||
- [Methods](basic-syntax/methods.md)
|
- [Methods](basic-syntax/methods.md)
|
||||||
- [Overloading](basic-syntax/functions-interlude.md)
|
- [Overloading](basic-syntax/functions-interlude.md)
|
||||||
- [Exercises](exercises/day-1/morning.md)
|
- [Exercises](exercises/day-1/morning.md)
|
||||||
|
33
src/basic-syntax/rustdoc.md
Normal file
33
src/basic-syntax/rustdoc.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Rustdoc
|
||||||
|
|
||||||
|
All language items in Rust can be documented using special `///` syntax.
|
||||||
|
|
||||||
|
```rust,editable
|
||||||
|
/// Determine whether the first argument is divisible by the second argument.
|
||||||
|
///
|
||||||
|
/// If the second argument is zero, the result is false.
|
||||||
|
fn is_divisible_by(lhs: u32, rhs: u32) -> bool {
|
||||||
|
if rhs == 0 {
|
||||||
|
return false; // Corner case, early return
|
||||||
|
}
|
||||||
|
lhs % rhs == 0 // The last expression in a block is the return value
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The contents are treated as Markdown. All published Rust library crates are
|
||||||
|
automatically documented at [`docs.rs`](https://docs.rs) using the
|
||||||
|
[rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) tool. It is
|
||||||
|
idiomatic to document all public items in an API using this pattern.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
* Show students the generated docs for the `rand` crate at
|
||||||
|
[`docs.rs/rand`](https://docs.rs/rand).
|
||||||
|
|
||||||
|
* This course does not include rustdoc on slides, just to save space, but in
|
||||||
|
real code they should be present.
|
||||||
|
|
||||||
|
* Inner doc comments are discussed later (in the page on modules) and need not
|
||||||
|
be addressed here.
|
||||||
|
|
||||||
|
</details>
|
@ -21,6 +21,20 @@ The `crate` root is in:
|
|||||||
* `src/lib.rs` (for a library crate)
|
* `src/lib.rs` (for a library crate)
|
||||||
* `src/main.rs` (for a binary crate)
|
* `src/main.rs` (for a binary crate)
|
||||||
|
|
||||||
|
Modules defined in files can be documented, too, using "inner doc comments".
|
||||||
|
These document the item that contains them -- in this case, a module.
|
||||||
|
|
||||||
|
```rust,editable,compile_fail
|
||||||
|
//! This module implements the garden, including a highly performant germination
|
||||||
|
//! implementation.
|
||||||
|
|
||||||
|
/// Sow the given seed packets.
|
||||||
|
fn sow(seeds: Vec<SeedPacket>) { todo!() }
|
||||||
|
|
||||||
|
// Harvest the produce in the garden that is ready.
|
||||||
|
fn harvest(garden: &mut Garden) { todo!() }
|
||||||
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
* The change from `module/mod.rs` to `module.rs` doesn't preclude the use of submodules in Rust 2018.
|
* The change from `module/mod.rs` to `module.rs` doesn't preclude the use of submodules in Rust 2018.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user