TWiR Friends of the forest

Corey Farwell (aka @frewsxcv ) has contributed so much to Rust.

Corey recently published this graph of the crate ecosystem,
and I thought, 'gosh, @frewsxcv is prolific'. Let's see some
of their other work!

This one is close to my heart: @frewsxcv maintains afl.rs, a Rust
interface to American Fuzzy Lop, and maintains a trophy case of bugs
the tool has found in Rust crates.

Corey is also the author of classic crates like threadpool.

@frewsxcv is one of those generous and patient folks who create
PR rollups, and keeping the PRs landing. This is a solitary,
thankless, but necessary, task. Thanks @frewsxcv!

They have 238 non-rollup commits to rust-lang/rust since 2014, and
they are some of my favorite kinds too: docs and tests:

b081872 Implement `PartialEq<&[A]>` for `VecDeque<A>`.
d896a0c Add more references between lowercase/uppercase operations.
47143e3 Add doc examples for `std::ffi::OsString` fucntions/methods.
c8822da A few improvements to the slice docs.
de73e52 Add doc examples & description in `std::os::unix::ffi`.
58a470e Minor improvements to docs in std::env structures/functions.
4794f95 Expand {Path,OsStr}::{to_str,to_string_lossy} doc examples.
20fd6cc Add 'platform-specific' section to `sleep_ms` to match `sleep`.
5cdf128 Document foreign variadic functions in TRPL and the reference.
0ab7812 Clarify behavior of `VecDeque::insert`.
273cc30 Clarify phrasing of MSYS2 dependencies in README.md.
4a354ab Fix 'unhygienically' typo.
44c2eb9 Move parenthesized statement within sentence.
8a472a5 Add a more complete doc example for 'include' macro.
fe0d092 Indicate that `BTreeSet::iter` returns values in ascending order.
86fc63e Implement `fmt::Debug` for all structures in libstd.
4d392d3 Document platform-specific differences for `std::process::exit`.
a664466 Improve the API examples for `std::fs::File`.
d409fc3 Rewrite, improve documentation for `core::hash::BuildHasherDefault`.
a99f70b Clarify zero-value behavior of `ctlz`/`cttz` intrinsics.
4c4e8c4 Simplify `BTreeSet::iter` doc example.
ae36934 Document how `BTreeSet` iterator structures are created.
cf56c1f Indicate `BTreeSet` in docs is code-like.
3cd9868 Add doc comment for `Default` `impl` on `DefaultHasher`.
274777a Rename 'librustc_unicode' crate to 'libstd_unicode'.
6075af4 Document how the `MutexGuard` structure is created.
6b4de8b Document how the `RwLockWriteGuard` structure is created.
276d91d Document how the `RwLockReadGuard` structure is created.
e1269ff Remove completed FIXME.
af1aa1b Update top-level path doc examples to show results.
f53d062 Minor rewriting of `std::path::Path::push` doc example.
c8c6d2c Use quieter test output when running tests on Travis CI.
a8dc297 Improve doc example for `std::borrow::Cow`.
0038430 Simplify `str` and `Path` comparison.
7c7a594 Return early to avoid excessive indentation.`
a8e2570 Use `Cow` instead of `String` to avoid unnecessary allocations.
3a15475 Convert `String` generating functions into `&str` constants.
e4f066f Remove unnecessary `pub` function classifier.
ba20da1 Make `ExternalHtml::load` short-circuited.
7be14ee Refactor away `load_or_return` macro.
f410da5 Add doc comments describing fields on `externalfiles::ExternalHtml`.
fd073cf Don't construct `PathBuf` ownership if we don't need it.
35d214a Remove redundant 'Variant' in variant names, stop reexporting.
88d4144 Migrate `VariantKind` constructor to `Clean` impl.
b55468c Simplify equality checks.
5b9ba4c Remove redundant 'Import' in variant names, stop reexporting.
a400ccc Cleanup `return` statements.
6d08949 Migrate `VariantKind` construction function to associated function.
0d0f1b4 Rename method 'to_string' to match conventions.
c3bc905 Remove redundant 'Type' in variant names, stop reexporting.
159b8c4 Update unstable attr to reference tracking issue.
7732e62 Simplify logic around Context's root_path.
c66c453 Migrate Item ➡ ItemType function to method.
2ba02a7 Add basic doc example for `core::ptr::write_bytes`.
99e1b9c Move in-pass-function structs and impls outside functions.
bd62c4c Move pass contants/types into the new `pass` module.
f1a3eb6 Separate rustdoc passes into separate modules.
5495fab Privatize `unindent` function.
a147a9d Fix incorrect alignment for `if` statement.
ae3ed31 Use underscores to breakup long number.
3b97344 Minor `VecDeque` doc examples cleanup.
6b697a3 Implement Debug for DirEntry.
e0d554a Add regression test for #9837.
5505ebc Add basic doc examples for `std::panic::{set_hook, take_hook}`.
5cab952 Don't ignore a doc code-block we can compile.
fae439b Add doc examples for std::net::IpAddr construction.
102b3a9 Add doc example for `std::time::Instant::elapsed`.
5652b62 Indicate where `core::result::IntoIter` is created.
3a96fe3 Transition Travis CI to use rustbuild.
268b3f5 Implement `Debug` for `std::path::Iter`.
f48d385 Implement `Debug` for `std::path::Components`.
10b8e0e rustbook chapters/sections should be an ordered list.
ced1252 Introduce `into_inner` method on `std::io::Take`.
905644d Rename {uint,int} methods to {usize,isize}.
42e8ac8 Implement `From<ast::FloatTy>` for `PrimitiveType`.
168cfea Implement `From<ast::UintTy>` for `PrimitiveType`.
8a6f7a5 Implement `From<ast::IntTy>` for `PrimitiveType`.
5c849f4 Remove unnecessary 'Primitive' prefix on `PrimitiveType` enum variants.
9dde563 Stop reexporting `PrimitiveType` enum in librustdoc.
0c9ff54 Migrate ItemType::from_type_kind to convert::From.
30397ae Migrate ItemType::from_item to convert::From.
7dc4116 Migrate Context::maybe_ignore_item method to standalone function.
28ecfb6 Move ItemEnum → Generics logic into method on ItemEnum.
19aae8e Reuse iterator to avoid unnecessary creation.
2655c89 Use idiomatic names for string-related methods names.
66a2578 Mark panicking tests as `should_panic` instead of `no_run`.
c2b6f72 Add a few doc examples for `std::ffi::OsStr`.
dc22186 Add basic unit test for `std::slice::Iter::as_slice`.
3808dc3 Implement `AsRef<[T]>` for `std::slice::Iter`.
bc52bdc Implement `Debug` for `std::vec::IntoIter`.
4e4d8ba Add doc example for `std::ffi::CString::from_vec_unchecked`.
01a766e Introduce `as_mut_slice` method on `std::vec::IntoIter` struct.
d099e30 Introduce `as_slice` method on `std::vec::IntoIter` struct.
9d6fa40 Add regression test for #22894.
e28521e Remove unnecessary `main` functions in doc examples.
28218be Utilize `PhantomData` to enforce `!Sync` and `!Send` field.
0a6b862 Add doc example for `std::ffi::NulError::into_vec`.
7fd7af9 Add regression test for #20847.
95cce86 Indicate tracking issue for `exact_size_is_empty` unstability.
727d929 Add doc examples for `range::RangeArgument::{start,end}`.
3081dd8 Add doc example for `std::ffi::NulError::nul_position`.
f2d8db1 Link to relevant method/struct for `std::net::Shutdown` docs.
57e3b9e Indicate where the `std::net::Incoming` struct is created.
2eea1f3 Rewrite `slice::chunks` doc example to not require printing.
f459e80 Rewrite `collections::LinkedList::append` doc example.
f98c55d Add documentation example for `str::Chars::as_str`.
a139772 Rewrite/expansion of `slice::split` doc examples.
c77f8ce Doc example improvements for `slice::windows`.
1e0043e Fix incorrect 'memory leak' example for `Vec::set_len`.
00e3149 Add doc examples for `Vec::{as_slice,as_mut_slice}`.
a005b2c Rewrite/expand doc examples for `Vec::set_len`.
b2f5b5a Indicate where `std::slice` structs originate from.
f80165d Remove unnecessary indexing and deref in `Vec::as_mut_slice`.
e2f5961 Partial rewrite/expansion of `Vec::truncate` documentation.
cf21a7b Mention where `std::vec` structs originate from.
27e44ed Add doc example for `std::process::ExitStatus::success`.
97d96bd `std::process` doc improvements.
fc2123a Remove unnecessarily mutable reference in doc example.
98e3120 Add doc examples for `io::Error::from_raw_os_error`.
c6a04d9 Fix broken markdown link in README.
325e09e Add doc example for `std::io::sink`.
a350ca6 Minor rewrite of `std::io::empty` doc example.
18b094b Add doc example for `std::io::repeat`.
a7b9e54 Add example for `std::thread::sleep`.
f1d600c Expand `std::path::Component` documentation.
f300faf Indicate how the `std::path::Components` struct is created.
c55f092 Add hyperlinks to `std::fs` functions from `std::path`.
0abee31 Add regression test for #24424.
fd388d4 Add doc example for `std::thread::Builder::name`.
5e9b75e Add examples in docs for `JoinHandle`.
0a6ce30 Use `Option::expect` instead of `unwrap_or_else` with `panic!`.
6e848be Indicate how the `JoinHandle` struct is created.
64137c4 Parameters in doc comment should be formatted code-like.
d5a2759 Add examples for `std::thread::Thread::name`.
9944b22 Add example in docs for `std::thread::panicking`.
7755d0c Add regression tests for #13727.
6458b04 Cleanup formatting and wording for `std::env::temp_dir` docs.
62b19c6 Utilize `Result::unwrap_err` in more places.
40025e8 Indicate struct names are code-like in doc-comment.
da4d7f5 Indicate `None` is code-like in doc comment.
2084f2e Implement `values_mut` on `BTreeMap`.
5972b22 Implement `values_mut` on `HashMap`.
313eb32 Address FIXMEs related to short lifetimes in `HashMap`.
99501e6 Remove no longer necessary coercions to fn pointer types.
3bc9157 Prefer HTTPS when linking to 131002.net.
9575fe7 Add regression test for Issue 26997.
73f4321 Refactor 'kind' extraction to use `str::split_whitespace`.
4d52b0f Utilize `if..let` over single `match` branch.
77eb78a Remove double-negative conditionals.
4238d0b Replace unneeded owned `Vec` usage with `slice`.
985cddf Use enum for message kind in compiletest harness.
abd1cea Stop ignoring expected note/help messages in compiletest suite.
6ed7846 Add comment about opt-in nature of compiletest note/help messages.
8f008ba Clean up cloning logic in compiletest.rs.
410333b Differentiate "line" and "line number" variable names.
e1048b5 Prefer `Option::expect` over explicit unwrapping.
d9dba76 Prefer 'associated function' over 'static method' in msg.
c82be2f Prefer 'match' pattern guard over conditional within body.
8adc3f7 Prefer `slice::get` over length check with indexing.
bc2f5e2 Use associated functions for libsyntax SepSeq constructors.
2338d74 Add Capacity/length methods for OsString.
5850d16 Remove unnecessary explicit lifetime bounds.
8f13f87 Improve 'std::mem::transmute_copy' doc example.
a60ec05 Add LLVM FunctionPass regression test using run-make.
e5e2cdb Add LLVM ModulePass regression test using run-make.
93d6425 Clarify scenario where AsciiExt appears to operate on non-ASCII
a193536 RefCell::borrow_mut example should demonstrate mut
d942621 Register LLVM passes with the correct LLVM pass manager.
987560a Add regression test for #22814
d98195b Add regression test for #17336
f18d1ad Format code-like text in Iterator::cloned doc-comment
e84461a Alter formatting for words in Option::cloned doc comment
1629dce Use correct indefinite article in reference.md
1e79d05 Add regression tests for #23304
3acec57 Fix formatting for E0067 and E0070 error messages
7954096 Add regression test for #21140
9d94ef5 Add regression tests for #23595
00f7268 Add regression test for #20544
26ef17d Add regression test for #22312
e2b6b02 Fix 'Relaaxed' typo in code comment
6419ace Add regression test for #13902
e834c03 Link to docs from error explanations via HTTPS
d8680f6 Add regression test for #17756
425871b Add regression test for #22375
68bb164 Add regression tests for #23649
c680f08 Add regression test for #21622
fba9cec Add regression test for #25180
afd1ed2 Add regression tests for #22864
536c244 Doc-comment fix; trait names are capitalized
0670651 Make adjancent code examples more similar
d13f765 Make mention of `if` more generic
685f557 Update docs to stop referencing `BufReadExt`
2741b94 Indicate code is code-like in diagnostic error message
554da45 Replaces instanced of 'an UTF' with 'a UTF'
ded5781 Remove unnecessary 'mut' qualifier on doc-comment var
960f800 Fix punctuation placement in doc-comment
57284e6 Make From::from example more idiomatic / simpler
b2757ed Indicate function call is code-like in doc-comment
a249910 Utilize `while let` instead of `loop` with `break` in doc-comment
115705f Indicate trait names in doc-comment are code-like
6898991 Remove doc-comment default::Default imports
be08d35 Simplify alloc::arc::Arc example in doc-comment
aaafb96 Fix typos in code comments
d2ed118 Indicate keywords are code-like in Fuse::reset_fuse doc comment
68d003c Utilize if..let for get_mut doc-comment examples
3908bae Indicate None is code-like in doc comments
1c6ccd9 Indicate None is code-like in doc comments
5c80b7a Simplify iterator logic for Fuse
69f63e9 Indicate keyword in doc comment is code-like
1a28237 Alter libcore::result example to utilize closure param
19d8b67 Remove unnecessary returns in API examples
263fdfe Cleanup and modernize some things in libcore::iter
6ff085c Make example function in comment more idiomatic
692c88c Simplify `match` branches in documentation comment
b406782 Indicate associated type in comment is code-like
4b6248a Simplify `match` branches in iter.rs example
5872ae4 Indicate select! is code-like
8fe7f1f Add an example for FromIterator::from_iter
d6492e2 Fix markdown bullet points in function docs
9f8226a Enforce a white background for the docs
f979f91 Bump LICENSE copyright year
4f801c4 Bump copyright year in doc footer
f031285 Remove graphviz::LabelText::* public reexport
f9ce6f5 Remove core::iter::MinMaxResult::* public reexport
1d26fb9 Remove core::atomic::Ordering::* public reexport
02feaf2 Remove cmp::Ordering::* public reexport
98af642 Remove a ton of public reexports
3fc6dc9 Expansion should explicitly include enum
9af324a Remove Result and Option reexports
4ef1674 Utilize fewer reexports
38e008e Fix typo in tests makefile
1919b12 getopts: cleanup, renames, remove reexports
ce238d7 Unpublicize reexports, unprefix JSON type aliases
02355b8 Clean up some logic/formatting in JSON module
ef5acff Fix some English spelling errors
d8a5242 Rename json::List to json::Array
01b4c04 Add myself as an author
dc0a7b6 Link to Unicode SpecialCasing.txt document

OMG so good!

Thanks @frewsxcv for all you bring to Rust!

8 Likes