diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 9e734cca..b92bd757 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -1,11 +1,13 @@ # markdownlint configuration with all properties set to their default value # EXCEPT -# MD052: false -# MD053: false # MD013: false -# MD043: false -# MD041: false # MD033: false +# MD034: false +# MD041: false +# MD043: false +# MD052: false +# MD053: false +# MD054 # Default state for all rules default: true @@ -161,7 +163,7 @@ MD033: false # allowed_elements: [] # MD034/no-bare-urls : Bare URL used : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md034.md -MD034: true +MD034: false # MD035/hr-style : Horizontal rule style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md035.md MD035: @@ -257,18 +259,18 @@ MD053: false # MD054/link-image-style : Link and image style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md054.md MD054: - # Allow autolinks - autolink: true - # Allow inline links and images + # Allow autolinks; default: true + autolink: false + # Allow inline links and images; default: true inline: true # Allow full reference links and images full: true - # Allow collapsed reference links and images - collapsed: true - # Allow shortcut reference links and images - shortcut: true + # Allow collapsed reference links and images; default: true + collapsed: false + # Allow shortcut reference links and images; default: true + shortcut: false # Allow URLs as inline links - url_inline: true + url_inline: false # MD055/table-pipe-style : Table pipe style : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md055.md MD055: diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5791e83d..bf7591c4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -75,10 +75,14 @@ Community leaders will follow these Community Impact Guidelines in determining t ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at . +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available [here][code_of_conduct]. -Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][enforcement_ladder]. -[homepage]: https://www.contributor-covenant.org +For answers to common questions about this code of conduct, see the [FAQ][faq]. [Translations][translations] are available. -For answers to common questions about this code of conduct, see the FAQ at . Translations are available at . +[homepage]: https://www.contributor-covenant.org +[code_of_conduct]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[enforcement_ladder]: https://github.com/mozilla/diversity +[faq]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/TODO.md b/TODO.md index f7f97142..742aa9bb 100644 --- a/TODO.md +++ b/TODO.md @@ -14,7 +14,8 @@ - [ ] review each .md file in turn - [ ] create badge refdefs for links to RBE book - [ ] pull request to little book of rust books -- [ ] Consider adding project to +- [ ] Consider adding project to [goodfirstissue.dev][goodfirstissue] +[goodfirstissue]: https://goodfirstissue.dev/language/rust - [ ] review GA / GSC - issues with redirects?? - [ ] incorporate cwd.rs example + any other new examples - [ ] finish word index @@ -27,17 +28,26 @@ - [ ] license - [ ] update thanks - [ ] add licenses to thanks page ? -- [ ] [add page TOC ?](https://github.com/zjp-CN/mdbook-theme) or [alternative](https://github.com/slowsage/mdbook-pagetoc) or [mdbook-toc](https://github.com/badboy/mdbook-toc) -- [ ] [better search?](https://github.com/ang-zeyu/infisearch) -- [ ] -- [ ] Review - [ ] already in links.md -- [ ] Review - [ ] already in links.md -- [ ] -- [ ] Link to +- [ ] add page TOC ? [mdbook-theme][mdbook-theme] +[mdbook-theme]: https://github.com/zjp-CN/mdbook-theme +[alternative][mdbook-pagetoc] +[mdbook-pagetoc]: https://github.com/slowsage/mdbook-pagetoc +[mdbook-toc][mdbook-toc] +[mdbook-toc]: https://github.com/badboy/mdbook-toc +- [ ] better search? [infisearch][infisearch] +[infisearch]: https://github.com/ang-zeyu/infisearch +- [ ] [rust-module-system][rust-module-system] +[rust-module-system]: https://www.sheshbabu.com/posts/rust-module-system +- [ ] Review [awesome-rust][awesome-rust] +[awesome-rust]: https://github.com/rust-unofficial/awesome-rust - already in links.md +- [ ] Review [rust-unofficial/patterns][rust-unofficial-patterns] [rust-unofficial-patterns]: https://github.com/rust-unofficial/patterns - already in links.md +- [ ] [rust_tutorial_that_actually_teaches_rust][rust_tutorial_that_actually_teaches_rust] [rust_tutorial_that_actually_teaches_rust]: https://www.reddit.com/r/rust/comments/15b9rl5/rust_tutorial_that_actually_teaches_rust +- [ ] Link to [rust-gentle-intro][rust-gentle-intro] [rust-gentle-intro]: https://stevedonovan.github.io/rust-gentle-intro - [ ] database access: sqlx, seaORM - [ ] CI / CD: rust-cache - [ ] cargo outdated / audit / license / deny -- [ ] +- [ ] [rust-state-machine-pattern][rust-state-machine-pattern] +[rust-state-machine-pattern]: https://hoverbear.org/blog/rust-state-machine-pattern - [ ] review deny.toml - [ ] more details in the standard library section - [ ] add more to tokio.md @@ -47,15 +57,15 @@ - [ ] 'static and Send constraints - [ ] I/O - [ ] Join, select -- [ ] -- [ ] -- [ ] -- [ ] +- [ ] [tracing-next-steps][tracing-next-steps] [tracing-next-steps]: https://tokio.rs/tokio/topics/tracing-next-steps +- [ ] [async-what-is-blocking][async-what-is-blocking] [async-what-is-blocking]: https://ryhl.io/blog/async-what-is-blocking +- [ ] [actors-with-tokio][actors-with-tokio] [actors-with-tokio]: https://ryhl.io/blog/actors-with-tokio +- [ ] [communicating-between-sync-and-async-code][communicating-between-sync-and-async-code] [communicating-between-sync-and-async-code]: https://docs.rs/tokio/latest/tokio/sync/mpsc/index.html#communicating-between-sync-and-async-code - [ ] Tower - [ ] add to Comparison to other languages - [ ] AWS - [ ] walkdir -- [ ] +- [ ] [flagset][flagset] [flagset]: https://docs.rs/flagset/latest/flagset - [ ] notify - [ ] indicatif, ratatui - [ ] time @@ -74,7 +84,7 @@ - [ ] Macros - [ ] egui - [ ] Badges -- [ ] rust and Docker - [ ] multistage builds +- [ ] rust and Docker; multistage builds - [ ] rust + docker compose - [ ] rust + Mongo example - [ ] add a rust axum example @@ -87,10 +97,10 @@ - [ ] Languages - [ ] finish actor.md - [ ] Search within the book -- [ ] -- [ ] -- [ ] -- [ ] -- [ ] -- [ ] +- [ ] [tinysearch][tinysearch-website] [tinysearch-website]: https://endler.dev/2019/tinysearch +- [ ] [stork-search.net][stork-search.net] [stork-search.net]: https://stork-search.net +- [ ] [minisearch][minisearch] [minisearch]: https://github.com/lucaong/minisearch +- [ ] [minisearch-client-side-fulltext-search-engine][minisearch-client-side-fulltext-search-engine] [minisearch-client-side-fulltext-search-engine]: https://lucaongaro.eu/blog/2019/01/30/minisearch-client-side-fulltext-search-engine.html +- [ ] [typesense][typesense-github] [typesense-github]: https://github.com/typesense/typesense +- [ ] [A Tiny, Static, Full-Text Search Engine using Rust and WebAssembly][tinysearch] [tinysearch]: https://news.ycombinator.com/item?id=23473303 - [ ] Algolia diff --git a/drafts/architecture.md b/drafts/architecture.md index 63ef9149..a9d4223b 100644 --- a/drafts/architecture.md +++ b/drafts/architecture.md @@ -1,3 +1,5 @@ # Architecture + Rust -- [Building a SaaS with Rust and Next.js | Rust & Web Dev with Josh Mo](https://joshmo.bearblog.dev/lets-build-a-saas-with-rust/) +- [Building a SaaS with Rust and Next.js][building-a-saas-with-rust-and-next-js]⮳ + +[building-a-saas-with-rust-and-next-js]: https://joshmo.bearblog.dev/lets-build-a-saas-with-rust/ diff --git a/drafts/asref.md b/drafts/asref.md index 12c7c38e..fe83f959 100644 --- a/drafts/asref.md +++ b/drafts/asref.md @@ -1,5 +1,8 @@ diff --git a/drafts/cd_ci.md b/drafts/cd_ci.md index 3cdd253e..b1ac5743 100644 --- a/drafts/cd_ci.md +++ b/drafts/cd_ci.md @@ -113,8 +113,13 @@ Example `.github/workflows/.yml` [Optimizing CI/CD pipelines][blog-optimizing-ci-cd-pipelines]⮳ -⮳ -⮳ +[Creating a docker container action][creating-a-docker-container-action-website]⮳ + +[creating-a-docker-container-action-website]: https://docs.github.com/en/actions/creating-actions/creating-a-docker-container-action + +["Upload a Build Artifact" Github Action][upload-a-build-artifact-website]⮳ + +[upload-a-build-artifact-website]: https://github.com/marketplace/actions/upload-a-build-artifact [`docker-cache`][docker-cache-github]{{hi:docker-cache}}⮳ @@ -122,20 +127,30 @@ Example `.github/workflows/.yml` [Docker GitHub Action][docker-gitHub-action]⮳ -⮳ +[Cache storage backends][cache-storage-backends]⮳ +[cache-storage-backends]: https://docs.docker.com/build/cache/backends -⮳ +[Cache management with GitHub Actions][cache-management-with-gitHub-actions-website]⮳ +[cache-management-with-gitHub-actions-website]: https://docs.docker.com/build/ci/github-actions/cache/ -⮳ +[How to cache docker-compose build inside github-action][stackoverflow-how-to-cache-docker-compose-build-inside-github-action]⮳ +[stackoverflow-how-to-cache-docker-compose-build-inside-github-action]: https://stackoverflow.com/questions/61491484/how-to-cache-docker-compose-build-inside-github-action {{#include ../refs/link-refs.md}} + diff --git a/drafts/dependency_management.md b/drafts/dependency_management.md index 3dd373e1..f415c6bd 100644 --- a/drafts/dependency_management.md +++ b/drafts/dependency_management.md @@ -6,8 +6,12 @@ Keep your dependencies up-to-date Deps.rs uses semantic versioning to detect outdated or insecure dependencies in your project's`Cargo.toml`. -- [deps.rs](https://deps.rs/) +- [deps.rs][deps-rs-website]⮳ ## Rust Digger -We are collecting data about [Rust Crates](https://crates.io/) to find the common practices of Open Source Rust developers and trying to improve the Rust ecosystem. [rust-digger.code-maven.com](https://rust-digger.code-maven.com/) +We are collecting data about [Rust Crates][crates.io]⮳ to find the common practices of Open Source Rust developers and trying to improve the Rust ecosystem. [rust-digger.code-maven.com][rust-digger]⮳ + +[rust-digger]: https://rust-digger.code-maven.com/ +[crates.io]: https://crates.io/ +[deps-rs-website]: https://deps.rs diff --git a/drafts/devops.md b/drafts/devops.md index 2b51e926..61ed7cd1 100644 --- a/drafts/devops.md +++ b/drafts/devops.md @@ -2,6 +2,8 @@ ## Daytona -Daytona is a self-hosted and secure open source development environment manager. Daytona's support for Dev Containers standard enables developers to tailor their environments to exact specifications and share configurations for efficient collaboration. +Daytona is a self-hosted and secure open source development environment manager. Daytona's support for Dev Containers standard enables developers to tailor their environments to exact specifications and share configurations for efficient collaboration -- [daytona.io/dotfiles/diy-guide-to-transform-any-machine-into-a-codespace](https://www.daytona.io/dotfiles/diy-guide-to-transform-any-machine-into-a-codespace) +[DIY Guide to Transform Any Machine into a Codespace][guide-to-transform-any-machine-into-a-codespace]⮳ + +[guide-to-transform-any-machine-into-a-codespace]: https://www.daytona.io/dotfiles/diy-guide-to-transform-any-machine-into-a-codespace diff --git a/drafts/reverse_proxy.md b/drafts/reverse_proxy.md index 4380b038..3350046f 100644 --- a/drafts/reverse_proxy.md +++ b/drafts/reverse_proxy.md @@ -2,20 +2,27 @@ ## Rathole -A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok. [Rathole](https://github.com/rapiz1/rathole) +A lightweight and high-performance reverse proxy for NAT traversal, written in Rust. An alternative to frp and ngrok. [Rathole][rathole-github]⮳ ### ngrok -- [ngrok secure ingress](https://github.com/ngrok/ngrok-rust) -- [ngrok](https://ngrok.com/) +- [ngrok secure ingress][ngrok-rust-github]⮳ +- [ngrok][ngrok-website]⮳ ### nginx -- [ngnix proxy manager](https://nginxproxymanager.com/) +- [ngnix proxy manager][nginx-proxy-manager]⮳ ## Pingora A library for building fast, reliable and evolvable network services. -- [Pingora (github)](https://github.com/cloudflare/pingora/tree/main) -- [Pingora quick start](https://github.com/cloudflare/pingora/blob/main/docs/quick_start.md) +- [Pingora (github)][pingora-github]⮳ +- [Pingora quick start][pingora-quick-start-github]⮳ + +[pingora-quick-start-github]: https://github.com/cloudflare/pingora/blob/main/docs/quick_start.md +[rathole-github]: https://github.com/rapiz1/rathole +[ngrok-rust-github]: https://github.com/ngrok/ngrok-rust +[ngrok-website]: https://ngrok.com +[nginx-proxy-manager]: https://nginxproxymanager.com/ +[pingora-github]: https://github.com/cloudflare/pingora/tree/main diff --git a/src/about.md b/src/about.md index f28c617e..b20d723f 100644 --- a/src/about.md +++ b/src/about.md @@ -2,11 +2,11 @@ ## Table of contents -- [Who this book is for](#who-this-book-is-for) -- [How to read this book](#how-to-read-this-book) -- [How to use the recipes](#how-to-use-the-recipes) -- [A note about error handling](#a-note-about-error-handling) -- [A note about crate representation](#a-note-about-crate-representation) +- [Who this book is for][who-this-book-is-for]⮳ +- [How to read this book][how-to-read-this-book]⮳ +- [How to use the recipes][how-to-use-the-recipes]⮳ +- [A note about error handling][a-note-about-error-handling]⮳ +- [A note about crate representation][a-note-about-crate-representation]⮳ ## Who this book is for @@ -83,8 +83,15 @@ This cookbook is intended eventually to provide expansive coverage of the Rust c At present the cookbook is focused on the standard library, and on "core" or "foundational" crates - those crates that make up the most common programming tasks, and that the rest of the ecosystem builds off of. +[a-note-about-crate-representation]: #a-note-about-crate-representation +[a-note-about-error-handling]: #a-note-about-error-handling +[how-to-use-the-recipes]: #how-to-use-the-recipes +[how-to-read-this-book]: #how-to-read-this-book +[who-this-book-is-for]: #who-this-book-is-for [index]: index.md + {{#include refs/link-refs.md}} + diff --git a/src/categories.md b/src/categories.md index 3d1be4a0..669d039b 100644 --- a/src/categories.md +++ b/src/categories.md @@ -89,9 +89,11 @@ | [![cat-websocket][cat-websocket-badge]][cat-websocket] | [![actix_web][c-actix_web-badge]][c-actix_web] | | | [![cat-http-server][cat-http-server-badge]][cat-http-server] | | | -[All Valid Categories]( https://crates.io/category_slugs ) +[All Valid Categories][crates.io-category_slugs]⮳ +[crates.io-category_slugs]: https://crates.io/category_slugs {{#include refs/link-refs.md}} + diff --git a/src/categories/algorithms/sorting.md b/src/categories/algorithms/sorting.md index e852c997..cc0e1b94 100644 --- a/src/categories/algorithms/sorting.md +++ b/src/categories/algorithms/sorting.md @@ -39,6 +39,7 @@ TODO: ## Sorting + Rust -- A Rust implementation of Glidesort, my stable adaptive quicksort/mergesort hybrid sorting algorithm. [glidesort](https://github.com/orlp/glidesort) +- A Rust implementation of Glidesort,a stable adaptive quicksort/mergesort hybrid sorting algorithm: [glidesort][glidesort-github]⮳ +[glidesort-github]: https://github.com/orlp/glidesort diff --git a/src/categories/asynchronous/async_channels.incl.md b/src/categories/asynchronous/async_channels.incl.md index ae1bc46c..e796320d 100644 --- a/src/categories/asynchronous/async_channels.incl.md +++ b/src/categories/asynchronous/async_channels.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |--------|--------|------------| | | | [![cat-asynchronous][cat-asynchronous-badge]][cat-asynchronous] | + diff --git a/src/categories/asynchronous/async_traits.incl.md b/src/categories/asynchronous/async_traits.incl.md index fd4cdfb2..5af2c0e9 100644 --- a/src/categories/asynchronous/async_traits.incl.md +++ b/src/categories/asynchronous/async_traits.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |--------|--------|------------| | | | [![cat-asynchronous][cat-asynchronous-badge]][cat-asynchronous] | + diff --git a/src/categories/asynchronous/futures.incl.md b/src/categories/asynchronous/futures.incl.md index ae1bc46c..e796320d 100644 --- a/src/categories/asynchronous/futures.incl.md +++ b/src/categories/asynchronous/futures.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |--------|--------|------------| | | | [![cat-asynchronous][cat-asynchronous-badge]][cat-asynchronous] | + diff --git a/src/categories/asynchronous/index.md b/src/categories/asynchronous/index.md index 804b54e7..03044257 100644 --- a/src/categories/asynchronous/index.md +++ b/src/categories/asynchronous/index.md @@ -67,21 +67,29 @@ Alternatives to the Tokio async ecosystem include: {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/asynchronous/streams.incl.md b/src/categories/asynchronous/streams.incl.md index ae1bc46c..e796320d 100644 --- a/src/categories/asynchronous/streams.incl.md +++ b/src/categories/asynchronous/streams.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |--------|--------|------------| | | | [![cat-asynchronous][cat-asynchronous-badge]][cat-asynchronous] | + diff --git a/src/categories/asynchronous/tokio.incl.md b/src/categories/asynchronous/tokio.incl.md index fd4cdfb2..5af2c0e9 100644 --- a/src/categories/asynchronous/tokio.incl.md +++ b/src/categories/asynchronous/tokio.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |--------|--------|------------| | | | [![cat-asynchronous][cat-asynchronous-badge]][cat-asynchronous] | + diff --git a/src/categories/command-line-interface/arguments.md b/src/categories/command-line-interface/arguments.md index e8fb24f0..efb4aa93 100644 --- a/src/categories/command-line-interface/arguments.md +++ b/src/categories/command-line-interface/arguments.md @@ -48,7 +48,7 @@ Your favorite number must be 256. ## Using `clap`'s derive API -[![clap][c-clap-badge]][c-clap] [(tutorial)]( https://docs.rs/clap/latest/clap/_derive/_tutorial/index.html ) [(cookbook)]( https://docs.rs/clap/latest/clap/_derive/_cookbook/index.html ) [(examples)]( https://github.com/clap-rs/clap/tree/master/examples ) [![cat-command-line-interface][cat-command-line-interface-badge]][cat-command-line-interface] +[![clap][c-clap-badge]][c-clap] [(tutorial)][c-clap-tutorial] [(cookbook)][c-clap-cookbook] [![clap examples][c-clap-examples-badge]][c-clap-examples] [![cat-command-line-interface][cat-command-line-interface-badge]][cat-command-line-interface] ```rust,editable,no_run {{#include ../../../deps/tests/clap.rs}} @@ -56,6 +56,8 @@ Your favorite number must be 256. {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/command-line-interface/index.md b/src/categories/command-line-interface/index.md index 8c58e4ad..6e3e47ae 100644 --- a/src/categories/command-line-interface/index.md +++ b/src/categories/command-line-interface/index.md @@ -18,14 +18,20 @@ Techniques to help create command line interfaces{{hi:Command line interfaces}}, {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/compilers/reduce_compilation_duration.md b/src/categories/compilers/reduce_compilation_duration.md index 90fde822..59cf1c0c 100644 --- a/src/categories/compilers/reduce_compilation_duration.md +++ b/src/categories/compilers/reduce_compilation_duration.md @@ -56,16 +56,20 @@ From-scratch builds with incremental compilation{{hi:Incremental compilation}} e {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/computer-vision/index.incl.md b/src/categories/computer-vision/index.incl.md index 400ce83d..fc6b056c 100644 --- a/src/categories/computer-vision/index.incl.md +++ b/src/categories/computer-vision/index.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |---|---|---| | [Open CV][ex-open-cv] | | [![cat-computer-vision][cat-computer-vision-badge]][cat-computer-vision] | + diff --git a/src/categories/concurrency/__actors.md b/src/categories/concurrency/__actors.md index 90d5c7c0..4a188b46 100644 --- a/src/categories/concurrency/__actors.md +++ b/src/categories/concurrency/__actors.md @@ -27,17 +27,24 @@ [Actors with `Tokio`][blog-actors-with-tokio]{{hi:Actors}}⮳ {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/concurrency/index.md b/src/categories/concurrency/index.md index ba11b68d..24253b88 100644 --- a/src/categories/concurrency/index.md +++ b/src/categories/concurrency/index.md @@ -30,17 +30,22 @@ Key constructs in Rust: Here are the topics we’ll cover: -- [Multithreading](multithreading.md) -- [Message passing](message_passing.md) -- [Shared-state concurrency](shared_state/index.md) -- [Concurrent data structures](shared_state/concurrent_data_structures.md) +- [Multithreading][p-multithreading]⮳ +- [Message passing][p-message_passing]⮳ +- [Shared-state concurrency][p-shared_state]⮳ +- [Concurrent data structures][p-concurrent_data_structures]⮳ ## See Also [![book-rust-concurrency][book-rust-concurrency-badge]][book-rust-concurrency] +[p-message_passing]: message_passing.md +[p-shared_state]: shared_state/index.md +[p-concurrent_data_structures]: shared_state/concurrent_data_structures.md +[p-multithreading]: multithreading.md {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/concurrency/shared_state/concurrent_data_structures.incl.md b/src/categories/concurrency/shared_state/concurrent_data_structures.incl.md index a38c352e..861de978 100644 --- a/src/categories/concurrency/shared_state/concurrent_data_structures.incl.md +++ b/src/categories/concurrency/shared_state/concurrent_data_structures.incl.md @@ -1,6 +1,7 @@ | Recipe | Crates | Categories | |---|---|---| | | | [![cat-concurrency][cat-concurrency-badge]][cat-concurrency] | + diff --git a/src/categories/concurrency/threads.md b/src/categories/concurrency/threads.md index 21791407..e9ffd875 100644 --- a/src/categories/concurrency/threads.md +++ b/src/categories/concurrency/threads.md @@ -67,7 +67,9 @@ This example calculates the SHA256{{hi:SHA256}} for every file with iso extensio This example generates an image by drawing a fractal from the [Julia set][julia-set]⮳ with a thread pool{{hi:thread pool}} for distributed computation. -[![julia-set]( https://cloud.githubusercontent.com/assets/221000/26546700/9be34e80-446b-11e7-81dc-dd9871614ea1.png )]( https://cloud.githubusercontent.com/assets/221000/26546700/9be34e80-446b-11e7-81dc-dd9871614ea1.png ) +[![julia-set][julia-set]][julia-set] + +[julia-set]: https://cloud.githubusercontent.com/assets/221000/26546700/9be34e80-446b-11e7-81dc-dd9871614ea1.png Allocate memory for output image of given width and height with [`image::ImageBuffer::new`][c-image::ImageBuffer::new]{{hi:image::ImageBuffer::new}}⮳. [`image::Rgb::from_channels`][c-image::Rgb::from_channels]{{hi:image::Rgb::from_channels}}⮳ calculates RGB pixel values. Create [`threadpool::ThreadPool`][c-threadpool::ThreadPool]{{hi:threadpool::ThreadPool}}⮳ with thread count equal to number of cores with [`num_cpus::get`][c-num_cpus::get]{{hi:num_cpus::get}}⮳. diff --git a/src/categories/data-structures/index.md b/src/categories/data-structures/index.md index 8113896e..6e7c7320 100644 --- a/src/categories/data-structures/index.md +++ b/src/categories/data-structures/index.md @@ -6,17 +6,21 @@ Rust implementations of ways of organizing data suited for specific purposes. {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/database-implementations/index.md b/src/categories/database-implementations/index.md index 9e56f10e..db77ca92 100644 --- a/src/categories/database-implementations/index.md +++ b/src/categories/database-implementations/index.md @@ -13,11 +13,14 @@ TODO: ## Sled -An embedded database [sled](https://github.com/spacejam/sled) +An embedded database [sled][c-sled-github]⮳ ## Search -- A lightning-fast search API that fits effortlessly into your apps, websites, and workflow: [meilisearch](https://github.com/meilisearch/meilisearch) -- Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust [tantivy](https://github.com/quickwit-oss/tantivy) +- A lightning-fast search API that fits effortlessly into your apps, websites, and workflow: [meilisearch][c-meilisearch-github]⮳ +- Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust [tantivy][c-tantivy-github]⮳ +[c-tantivy-github]: https://github.com/quickwit-oss/tantivy +[c-sled-github]: https://github.com/spacejam/sled +[c-meilisearch-github]: https://github.com/meilisearch/meilisearch diff --git a/src/categories/database/index.md b/src/categories/database/index.md index 2b8f7dc5..a85d6cbe 100644 --- a/src/categories/database/index.md +++ b/src/categories/database/index.md @@ -21,5 +21,7 @@ TODO: ## Cornucopia for postgres -Generate type-checked Rust from your PostgreSQL: [cornucopia-rs](https://github.com/cornucopia-rs/cornucopi) +Generate type-checked Rust from your PostgreSQL: [cornucopia-rs][c-cornucopia-github]⮳ + +[c-cornucopia-github]: https://github.com/cornucopia-rs/cornucopia diff --git a/src/categories/database/query_builders_orms.md b/src/categories/database/query_builders_orms.md index cd7cdcd8..4aed127b 100644 --- a/src/categories/database/query_builders_orms.md +++ b/src/categories/database/query_builders_orms.md @@ -23,6 +23,8 @@ diff --git a/src/categories/development-tools/cargo/index.md b/src/categories/development-tools/cargo/index.md index 64d229b7..321232e0 100644 --- a/src/categories/development-tools/cargo/index.md +++ b/src/categories/development-tools/cargo/index.md @@ -80,7 +80,7 @@ Examples of version requirements{{hi:Version requirements}} and the versions tha 0 := >=0.0.0, <1.0.0 ``` -Details in ⮳ +Details in [Specifying Dependencies][book-cargo-specifying-dependencies]⮳ If you’re building a non-end product, such as a rust library that other rust packages will depend on, put `Cargo.lock` in your `.gitignore`. diff --git a/src/categories/development-tools/documentation/mdbook.md b/src/categories/development-tools/documentation/mdbook.md index 49cec9d7..aca7b6f8 100644 --- a/src/categories/development-tools/documentation/mdbook.md +++ b/src/categories/development-tools/documentation/mdbook.md @@ -20,15 +20,21 @@ mdbook serve --open [![mdbook_hide-github][c-mdbook_hide-github-badge]][c-mdbook_hide-github] [![cat-development-tools][cat-development-tools-badge]][cat-development-tools] {{#include ../../../refs/link-refs.md}} + diff --git a/src/categories/development-tools/installation/index.md b/src/categories/development-tools/installation/index.md index 028f6002..25484781 100644 --- a/src/categories/development-tools/installation/index.md +++ b/src/categories/development-tools/installation/index.md @@ -4,7 +4,7 @@ ## Rustup -[Rustup](rustup.md) [![cat-development-tools][cat-development-tools-badge]][cat-development-tools] +[Rustup][p-rustup]⮳ [![cat-development-tools][cat-development-tools-badge]][cat-development-tools] ## Cargo install @@ -20,8 +20,11 @@ Binstall provides a low-complexity mechanism for installing Rust binaries{{hi:Ru Binstall works by fetching the crate information from crates.io and searching the linked repository for matching releases and artifacts, falling back to the quickinstall{{hi:quickinstall}} third-party artifact host, to alternate targets as supported, and finally to `cargo install` as a last resort. +[p-rustup]: rustup.md {{#include refs.incl.md}} {{#include ../../../refs/link-refs.md}} + diff --git a/src/categories/development-tools/other/index.md b/src/categories/development-tools/other/index.md index f98fc8bf..6df523f4 100644 --- a/src/categories/development-tools/other/index.md +++ b/src/categories/development-tools/other/index.md @@ -17,18 +17,22 @@ TODO: ## Binary minimizer -How to minimize Rust binary size [min-sized-rust](https://github.com/johnthagen/min-sized-rust) +How to minimize Rust binary size [min-sized-rust][min-sized-rust-github]⮳ ## Code generators -- [top-artificial-intelligence-ai-tools-that-can-generate-code-to-help-programmers](https://www.marktechpost.com/2024/03/14/top-artificial-intelligence-ai-tools-that-can-generate-code-to-help-programmers/) +- [top-artificial-intelligence-ai-tools-that-can-generate-code-to-help-programmers][ai-tools-that-can-generate-code]⮳ ## Code verifier -Kani Rust Verifier [kani](https://github.com/model-checking/kani) +Kani Rust Verifier [kani][kani-github]⮳ ## Formal Methods + Rust -- [rust-formal-methods.github.io](https://rust-formal-methods.github.io/tools.html) +- [rust-formal-methods.github.io][rust-formal-methods]⮳ +[ai-tools-that-can-generate-code]: https://www.marktechpost.com/2024/03/14/top-artificial-intelligence-ai-tools-that-can-generate-code-to-help-programmers/ +[kani-github]: https://github.com/model-checking/kani +[rust-formal-methods]: https://rust-formal-methods.github.io/tools.html +[min-sized-rust-github]: https://github.com/johnthagen/min-sized-rust diff --git a/src/categories/development-tools_cargo-plugins/index.md b/src/categories/development-tools_cargo-plugins/index.md index 8de719c5..30254e5b 100644 --- a/src/categories/development-tools_cargo-plugins/index.md +++ b/src/categories/development-tools_cargo-plugins/index.md @@ -118,33 +118,33 @@ cargo install --force cargo-make cargo make --version ``` -- [automating-your-rust-workflows-with-cargo-make-part-1-of-5-introduction-and-basics](https://medium.com/@sagiegurari/automating-your-rust-workflows-with-cargo-make-part-1-of-5-introduction-and-basics-b19ced7e7057) +- [automating-your-rust-workflows-with-cargo-make-part-1-of-5-introduction-and-basics][c-cargo-make-blog]⮳ ## Cargo plugins -GitHub Action for installing development tools (mainly from GitHub Releases). List of tools: [cargo plugins](https://github.com/taiki-e/install-action) +GitHub Action for installing development tools (mainly from GitHub Releases). List of tools: [cargo plugins][cargo-plugins]⮳ ## Cargo auditable -Make production Rust binaries auditable [cargo-auditable](https://github.com/rust-secure-code/cargo-auditable) +Make production Rust binaries auditable [cargo-auditable][c-cargo-auditable-github]⮳ ## Cargo limit -Cargo with less noise: warnings are skipped until errors are fixed, Neovim integration, etc [crates.io/crates/cargo-limit](https://crates.io/crates/cargo-limit) +Cargo with less noise: warnings are skipped until errors are fixed, Neovim integration, etc [crates.io/crates/cargo-limit][c-cargo-limit-crates.io]⮳ ## Cargo cache -- [`cargo cache`](https://github.com/matthiaskrgr/cargo-cache) +- [`cargo cache`][c-cargo-cache-github]⮳ ## Cargo Husky -[cargo-husky](https://github.com/rhysd/cargo-husky) Setup Git hooks automatically for cargo projects with 🐶 +[cargo-husky][c-cargo-husky-github]⮳ Setup Git hooks automatically for cargo projects with 🐶 -See also: Git hook scripts are useful for identifying simple issues before submission to code review [pre-commit.com](https://pre-commit.com/index.html) A framework for managing and maintaining multi-language pre-commit hooks. +See also: Git hook scripts are useful for identifying simple issues before submission to code review [pre-commit.com][pre-commit.com-website]⮳ A framework for managing and maintaining multi-language pre-commit hooks. ## Cargo xtask -[cargo-xtask](https://github.com/matklad/cargo-xtask) cargo-xtask is a way to add free-form automation to a Rust project, a-la `make`, `npm run` or bespoke bash scripts. +[cargo-xtask][c-cargo-xtask-github]⮳ cargo-xtask is a way to add free-form automation to a Rust project, a-la `make`, `npm run` or bespoke bash scripts. The two distinguishing features of xtask are: @@ -153,24 +153,38 @@ The two distinguishing features of xtask are: ### Devx -[devx](https://github.com/elastio/devx) Collection of utilities for writing your own dev scripts +[devx][c-devx-github]⮳ Collection of utilities for writing your own dev scripts -Devx is a collection of utilities for writing your own dev scripts in Rust. The project is inspired by and intended for seamless usage with [`cargo-xtask` idioms (you are highly encouraged to study them first)](https://github.com/matklad/cargo-xtask). +Devx is a collection of utilities for writing your own dev scripts in Rust. The project is inspired by and intended for seamless usage with [`cargo-xtask` idioms (you are highly encouraged to study them first)][c-cargo-xtask-github]⮳ ### xshell: Making Rust a Better Bash -`xshell` provides a set of cross-platform utilities for writing cross-platform and ergonomic "bash" scripts. [github.com/matklad/xshell](https://github.com/matklad/xshell) +`xshell` provides a set of cross-platform utilities for writing cross-platform and ergonomic "bash" scripts. [github.com/matklad/xshell][c-xshell-github]⮳ ### Duct -[duct.rs](https://github.com/oconnor663/duct.rs) Duct is a library for running child processes. Duct makes it easy to build pipelines and redirect IO like a shell. At the same time, Duct helps you write correct, portable code: whitespace is never significant, errors from child processes get reported by default, and a variety of [gotchas, bugs, and platform inconsistencies](https://github.com/oconnor663/duct.py/blob/master/gotchas.md) are handled for you the Right Way™. +[duct.rs][c-duct-github]⮳ Duct is a library for running child processes. Duct makes it easy to build pipelines and redirect IO like a shell. At the same time, Duct helps you write correct, portable code: whitespace is never significant, errors from child processes get reported by default, and a variety of [gotchas, bugs, and platform inconsistencies][c-duct-gotchas-github]⮳ are handled for you the Right Way™. ## Cargo hakari -[cargo-hakari](https://crates.io/crates/cargo-hakari) Manage workspace-hack packages to speed up builds in large workspaces. +[cargo-hakari][c-cargo-hakari-crates.io]⮳ Manage workspace-hack packages to speed up builds in large workspaces. ## Cargo wizard -Cargo subcommand for configuring Cargo projects for best performance. [github.com/Kobzol/cargo-wizard](https://github.com/Kobzol/cargo-wizard) - +Cargo subcommand for configuring Cargo projects for best performance. [cargo-wizard][c-cargo-wizard-github]⮳ + +[cargo-plugins]: https://github.com/taiki-e/install-action +[c-cargo-limit-crates.io]: https://crates.io/crates/cargo-limit +[c-cargo-auditable-github]: https://github.com/rust-secure-code/cargo-auditable +[c-cargo-cache-github]: https://github.com/matthiaskrgr/cargo-cache +[c-cargo-husky-github]: https://github.com/rhysd/cargo-husky +[pre-commit.com-website]: https://pre-commit.com/index.html +[c-cargo-xtask-github]: https://github.com/matklad/cargo-xtask +[c-devx-github]: https://github.com/elastio/devx +[c-xshell-github]: https://github.com/matklad/xshell +[c-duct-github]: https://github.com/oconnor663/duct.rs +[c-duct-gotchas-github]: https://github.com/oconnor663/duct.py/blob/master/gotchas.md +[c-cargo-hakari-crates.io]: https://crates.io/crates/cargo-hakari +[c-cargo-wizard-github]: https://github.com/Kobzol/cargo-wizard +[c-cargo-make-blog]: https://medium.com/@sagiegurari/automating-your-rust-workflows-with-cargo-make-part-1-of-5-introduction-and-basics-b19ced7e7057 diff --git a/src/categories/development-tools_debugging/index.md b/src/categories/development-tools_debugging/index.md index be4bbf9d..e29c845a 100644 --- a/src/categories/development-tools_debugging/index.md +++ b/src/categories/development-tools_debugging/index.md @@ -16,10 +16,14 @@ TODO: ## Observability -petabyte scale Elasticsearch/Splunk/Datadog alternative for logs, metrics, traces, RUM, Error tracking, Session replay: [openobserve](https://github.com/openobserve/openobserve) +petabyte scale Elasticsearch/Splunk/Datadog alternative for logs, metrics, traces, RUM, Error tracking, Session replay: [openobserve][c-openobserve-github]⮳ ## Tracing -Support for logging [`tracing`](https://crates.io/crates/tracing) events natively to [journald](https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html), preserving structured information: [tracing_journald](https://docs.rs/tracing-journald/latest/tracing_journald/) +Support for logging [`tracing`][c-tracing-crates.io]⮳ events natively to [journald][journald]⮳, preserving structured information: [tracing_journald][c-tracing_journald]⮳ +[c-openobserve-github]: https://github.com/openobserve/openobserve +[c-tracing_journald]: https://docs.rs/tracing-journald +[journald]: https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html +[c-tracing-events-crates.io]: https://crates.io/crates/tracing diff --git a/src/categories/embedded/index.md b/src/categories/embedded/index.md index 405397ca..f5154d72 100644 --- a/src/categories/embedded/index.md +++ b/src/categories/embedded/index.md @@ -8,13 +8,16 @@ Crates that are primarily useful on embedded devices or without an operating sys {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/encoding/csv.md b/src/categories/encoding/csv.md index c6d01525..98965d39 100644 --- a/src/categories/encoding/csv.md +++ b/src/categories/encoding/csv.md @@ -39,7 +39,7 @@ Returns _only_ the rows from `data` with a field that matches `query`. {{#include ../../../deps/tests/filter.rs}} ``` -_Disclaimer: this example has been adapted from [the csv crate tutorial](https://docs.rs/csv/*/csv/tutorial/index.html#filter-by-search)⮳_. +This example has been adapted from [the csv crate tutorial][c-csv-crate-tutorial]⮳ ## Handle invalid CSV data with Serde @@ -83,8 +83,10 @@ See [`csv::Reader::deserialize`][c-csv::Reader::deserialize]{{hi:csv::Reader::de {{#include ../../../deps/tests/transform.rs}} ``` +[c-csv-crate-tutorial]: https://docs.rs/csv/*/csv/tutorial/index.html#filter-by-search {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/encoding/index.md b/src/categories/encoding/index.md index 51971dbb..e226b64f 100644 --- a/src/categories/encoding/index.md +++ b/src/categories/encoding/index.md @@ -23,6 +23,8 @@ Encoding and/or decoding{{hi:Decoding}} data from one data format to another. diff --git a/src/categories/finance/index.md b/src/categories/finance/index.md index 331cb12a..a7a16788 100644 --- a/src/categories/finance/index.md +++ b/src/categories/finance/index.md @@ -12,6 +12,7 @@ Dealing with money: accounting, trading, investments, taxes, banking and payment TODO: ## RustQuant -- [rustquant](https://lib.rs/crates/rustquant) +- [rustquant][c-rustquant-lib.rs]⮳ +[c-rustquant-lib.rs]: https://lib.rs/crates/rustquant diff --git a/src/categories/graphics/index.md b/src/categories/graphics/index.md index a7e25c7c..0f30cdac 100644 --- a/src/categories/graphics/index.md +++ b/src/categories/graphics/index.md @@ -10,15 +10,18 @@ Crates for graphics libraries and applications, including raster and vector grap {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/gui/index.md b/src/categories/gui/index.md index da31fccb..bab70147 100644 --- a/src/categories/gui/index.md +++ b/src/categories/gui/index.md @@ -40,34 +40,58 @@ TODO: ## UI -- A cross-platform GUI library for Rust, inspired by Elm [github.com/iced-rs/iced](https://github.com/iced-rs/iced) -- Turn any webpage into a desktop app with Rust. [github.com/tw93/Pake](https://github.com/tw93/Pake) +- A cross-platform GUI library for Rust, inspired by Elm [iced-rs][c-iced-github]⮳ +- Turn any webpage into a desktop app with Rust [Pake][c-pake-github]⮳ + +[c-pake-github]: https://github.com/tw93/Pake +[c-iced-github]: https://github.com/iced-rs/iced ### Slint -- [slint.dev](https://slint.dev/) -- [Slint (github)](https://github.com/slint-ui/slint/) -- [madewithslint.com](https://madewithslint.com/) +- [slint.dev][c-slint-website]⮳ +- [Slint (github)][c-slint-github]⮳ +- [madewithslint.com][c-slint-madewithslint-website]⮳ + +[c-slint-github]: https://github.com/slint-ui/slint +[c-slint-website]: https://slint.dev +[c-slint-madewithslint-website]: https://madewithslint.com ### GPUI -- [gpui.rs](https://www.gpui.rs/) A fast, productive UI framework for Rust from the creators of [Zed](https://zed.dev/). +- [gpui.rs][gpui.rs]⮳ A fast, productive UI framework for Rust from the creators of [Zed][c-zed-website]⮳ + +[c-zed-website]: https://zed.dev +[gpui.rs]: https://www.gpui.rs ### egui 2 -- [egui.rs](https://www.egui.rs) -- [egui_demo_lib](https://github.com/emilk/egui/blob/master/crates/egui_demo_lib/src/demo/code_example.rs) -- [docs.rs/egui/latest/egui/widgets/index.html#structs](https://docs.rs/egui/latest/egui/widgets/index.html#structs) -- [docs.rs/egui/latest/egui/containers](https://docs.rs/egui/latest/egui/containers/index.html) -- [docs.rs/egui/latest/egui/struct.Ui.html](https://docs.rs/egui/latest/egui/struct.Ui.html#method.checkbox) +- [egui.rs][c-egui-website]⮳ +- [egui_demo_lib][c-egui_demo_lib-github]⮳ +- [widgets][c-egui-widgets]⮳ +- [egui containers][c-egui-containers]⮳ +- [egui struct.Ui][c-egui::Ui]⮳ + +[c-egui-containers]: https://docs.rs/egui/latest/egui/containers +[c-egui::Ui]: https://docs.rs/egui/latest/egui/struct.Ui.html +[c-egui-website]: https://www.egui.rs +[c-egui-widgets]: https://docs.rs/egui/latest/egui/widgets/index.html#structs +[c-egui_demo_lib-github]: https://github.com/emilk/egui/blob/master/crates/egui_demo_lib/src/demo/code_example.rs ### Floem -- A native Rust UI library with fine-grained reactivity. Inspired by [Xilem](https://github.com/linebender/xilem), [Leptos](https://github.com/leptos-rs/leptos) and [rui](https://github.com/audulus/rui), Floem aims to be a high performance declarative UI library requiring minimal user effort. -- [Floem (github)](https://github.com/lapce/floem) -- [Floem (docs)](https://docs.rs/floem) +- A native Rust UI library with fine-grained reactivity. Inspired by [Xilem][c-xilem-github]⮳, [Leptos][c-leptos-github]⮳ +and [rui][c-rui-github]⮳. Floem aims to be a high performance declarative UI library requiring minimal user effort. +- [Floem (github)][c-floem-github]⮳ +- [Floem (docs)][c-floem]⮳ + +[c-rui-github]: https://github.com/audulus/rui +[c-leptos-github]: https://github.com/leptos-rs/leptos +[c-floem-github]: https://github.com/lapce/floem +[c-floem]: https://docs.rs/floem +[c-xilem-github]: https://github.com/linebender/xilem + +[Logan Keenan - Client-Side Server with Rust- A New Approach to UI Development][client-side-server-with-rust]⮳ -Logan Keenan - Client-Side Server with Rust- A New Approach to UI Development - +[client-side-server-with-rust]: https://logankeenan.com/posts/client-side-server-with-rust-a-new-approach-to-ui-development diff --git a/src/categories/os/index.md b/src/categories/os/index.md index a3c18a40..c05e831b 100644 --- a/src/categories/os/index.md +++ b/src/categories/os/index.md @@ -4,14 +4,18 @@ Bindings to operating system-specific APIs{{hi:Operating system-specific APIs}}. {{#include external.incl.md}} +## Rust OSes + +- An operating system designed for hosting containers [bottlerocket][bottlerocket-github]⮳ +- Redox: A Rust Operating System [redox][redox-github]⮳ + +[bottlerocket-github]: https://github.com/bottlerocket-os/bottlerocket +[redox-github]: https://github.com/redox-os/redox + {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/parsing/index.md b/src/categories/parsing/index.md index 6bd9dd17..4e9d5f2f 100644 --- a/src/categories/parsing/index.md +++ b/src/categories/parsing/index.md @@ -16,6 +16,7 @@ Crates to help create parsers of binary and text formats. Format-specific parser {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/rust-patterns/index.md b/src/categories/rust-patterns/index.md index 735de472..f2235fe8 100644 --- a/src/categories/rust-patterns/index.md +++ b/src/categories/rust-patterns/index.md @@ -10,15 +10,16 @@ Shared solutions for particular situations specific to programming in Rust. {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/science/machine_learning/index.md b/src/categories/science/machine_learning/index.md index ebc4b372..b102f6cb 100644 --- a/src/categories/science/machine_learning/index.md +++ b/src/categories/science/machine_learning/index.md @@ -12,12 +12,16 @@ {{#include refs.incl.md}} {{#include ../../../refs/link-refs.md}} + diff --git a/src/categories/science_robotics/index.md b/src/categories/science_robotics/index.md index 919e6b53..ae2eabb5 100644 --- a/src/categories/science_robotics/index.md +++ b/src/categories/science_robotics/index.md @@ -20,13 +20,15 @@ Open Rust Robotics: [![openrr-github][c-openrr-github-badge]][c-openrr-github] [Zenoh][c-zenoh-website]⮳ - - {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/simulation/index.md b/src/categories/simulation/index.md index 273df423..15ee2965 100644 --- a/src/categories/simulation/index.md +++ b/src/categories/simulation/index.md @@ -8,9 +8,12 @@ Crates used to model or construct models for some activity, e.g. to.simulate a n {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/text-editors/index.md b/src/categories/text-editors/index.md index d44ba690..f27445e9 100644 --- a/src/categories/text-editors/index.md +++ b/src/categories/text-editors/index.md @@ -24,10 +24,15 @@ If you have a JetBrains license, CLion is your go-to editor for Rust in JetBrain {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/text-processing/index.md b/src/categories/text-processing/index.md index 5e650342..e287cc79 100644 --- a/src/categories/text-processing/index.md +++ b/src/categories/text-processing/index.md @@ -10,15 +10,20 @@ Deal with the complexities of human language when expressed in textual form. {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/wasm/index.md b/src/categories/wasm/index.md index 5e527c65..a2302169 100644 --- a/src/categories/wasm/index.md +++ b/src/categories/wasm/index.md @@ -22,13 +22,20 @@ TODO: ## WASM + Rust -- [wasmer.io](https://wasmer.io/) -- [wasmtime](https://github.com/bytecodealliance/wasmtime) -- [docs.wasmtime.dev](https://docs.wasmtime.dev/introduction.html) -- [rustwasm.github.io](https://rustwasm.github.io/docs/book/reference/deploying-to-production.html) +- [wasmer.io][wasmer-website]⮳ +- [wasmtime][c-wasmtime-github]⮳ +- [docs.wasmtime.dev][c-wasmtime-docs]⮳ +- [rustwasm.github.io][c-rustwasm-website]⮳ + +[c-rustwasm-website]: https://rustwasm.github.io/docs/book/reference/deploying-to-production.html +[c-wasmtime-github]: https://github.com/bytecodealliance/wasmtime +[wasmer-website]: https://wasmer.io +[c-wasmtime-docs]: https://docs.wasmtime.dev/introduction.html ## Rust WASM example code -- [rust-yew-realworld-example-app](https://github.com/jetli/rust-yew-realworld-example-app) +- [rust-yew-realworld-example-app][rust-yew-realworld-example-app-github]⮳ + +[rust-yew-realworld-example-app-github]: https://github.com/jetli/rust-yew-realworld-example-app diff --git a/src/categories/web-programming_http-client/apis.md b/src/categories/web-programming_http-client/apis.md index a6124ec6..9354570b 100644 --- a/src/categories/web-programming_http-client/apis.md +++ b/src/categories/web-programming_http-client/apis.md @@ -6,7 +6,7 @@ [![reqwest][c-reqwest-badge]][c-reqwest] [![serde][c-serde-badge]][c-serde] [![cat-network-programming][cat-network-programming-badge]][cat-network-programming] [![cat-encoding][cat-encoding-badge]][cat-encoding] [![cat-web-programming][cat-web-programming-badge]][cat-web-programming] [![cat-http-client][cat-http-client-badge]][cat-http-client] -Queries GitHub [stargazers API v3](https://developer.github.com/v3/activity/starring/#list-stargazers)⮳ with [`reqwest::get`][c-reqwest::get]{{hi:reqwest::get}}⮳ to get list of all users who have marked a GitHub project with a star. [`reqwest::Response`][c-reqwest::Response]{{hi:reqwest::Response}}⮳ is deserialized with [`reqwest::Response::json`][c-reqwest::Response::json]{{hi:reqwest::Response::json}}⮳ into `User` objects implementing [`serde::Deserialize`][c-serde::Deserialize]{{hi:serde::Deserialize}}⮳. +Queries GitHub [stargazers API v3][stargazers]⮳ with [`reqwest::get`][c-reqwest::get]{{hi:reqwest::get}}⮳ to get list of all users who have marked a GitHub project with a star. [`reqwest::Response`][c-reqwest::Response]{{hi:reqwest::Response}}⮳ is deserialized with [`reqwest::Response::json`][c-reqwest::Response::json]{{hi:reqwest::Response::json}}⮳ into `User` objects implementing [`serde::Deserialize`][c-serde::Deserialize]{{hi:serde::Deserialize}}⮳. [`tokio::main`][c-tokio_tutorial_hello_tokio-website]{{hi:tokio::main}} is used to set up the async executor and the process waits for [`reqwest::get`][c-reqwest::get]{{hi:reqwest::get}} to complete before processing the response into User instances. @@ -14,6 +14,8 @@ Queries GitHub [stargazers API v3](https://developer.github.com/v3/activity/star {{#include ../../../deps/tests/rest-get.rs}} ``` +[stargazers]: https://developer.github.com/v3/activity/starring/#list-stargazers + ## Check if an API resource exists [![reqwest][c-reqwest-badge]][c-reqwest] [![cat-network-programming][cat-network-programming-badge]][cat-network-programming] [![cat-web-programming][cat-web-programming-badge]][cat-web-programming] [![cat-http-client][cat-http-client-badge]][cat-http-client] @@ -30,7 +32,7 @@ Due to both [`reqwest::ClientBuilder::build`][c-reqwest::ClientBuilder::build]{{ [![reqwest][c-reqwest-badge]][c-reqwest] [![serde][c-serde-badge]][c-serde] [![cat-network-programming][cat-network-programming-badge]][cat-network-programming] [![cat-encoding][cat-encoding-badge]][cat-encoding] [![cat-web-programming][cat-web-programming-badge]][cat-web-programming] [![cat-http-client][cat-http-client-badge]][cat-http-client] -Creates a gist with POST request to GitHub [gists API v3](https://developer.github.com/v3/gists/)⮳ using [`reqwest::Client::post`][c-reqwest::Client::post]{{hi:reqwest::Client::post}}⮳ and removes it with DELETE request using [`reqwest::Client::post`][c-reqwest::Client::post]{{hi:reqwest::Client::post}}⮳. +Creates a gist with POST request to GitHub [gists API v3][gist-api]⮳ using [`reqwest::Client::post`][c-reqwest::Client::post]{{hi:reqwest::Client::post}}⮳ and removes it with DELETE request using [`reqwest::Client::post`][c-reqwest::Client::post]{{hi:reqwest::Client::post}}⮳. The [`reqwest::Client`][c-reqwest::Client]{{hi:reqwest::Client}}⮳ is responsible for details of both requests including URL, body and authentication. The POST body from [`reqwest::Client`][c-reqwest::Client]{{hi:reqwest::Client}}⮳ macro provides arbitrary JSON body. Call to [`reqwest::Client`][c-reqwest::Client]{{hi:reqwest::Client}}⮳ sets the request body. [`reqwest::Client`][c-reqwest::Client]{{hi:reqwest::Client}}⮳ handles authentication. The call to [`reqwest::Client`][c-reqwest::Client]{{hi:reqwest::Client}}⮳ synchronously executes the requests. @@ -60,8 +62,10 @@ This example uses the [`GitHub API - rate limiting`][github-api-rate-limiting]{{ {{#include ../../../deps/tests/rate-limited.rs}} ``` +[gist-api]: https://developer.github.com/v3/gists {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/web-programming_http-server/index.md b/src/categories/web-programming_http-server/index.md index 2f3c3daf..60891824 100644 --- a/src/categories/web-programming_http-server/index.md +++ b/src/categories/web-programming_http-server/index.md @@ -10,33 +10,50 @@ Serve data over HTTP. {{#include refs.incl.md}} {{#include ../../refs/link-refs.md}} + diff --git a/src/categories/web-programming_http-server/static_website_generators.md b/src/categories/web-programming_http-server/static_website_generators.md index bcf13e79..5bde3ecd 100644 --- a/src/categories/web-programming_http-server/static_website_generators.md +++ b/src/categories/web-programming_http-server/static_website_generators.md @@ -8,6 +8,8 @@ diff --git a/src/contributing/api_documentation.md b/src/contributing/api_documentation.md index 908812cf..79e6c98a 100644 --- a/src/contributing/api_documentation.md +++ b/src/contributing/api_documentation.md @@ -6,7 +6,7 @@ Use `just doc` to generate the documentation for `docs.rs`. ### Using a Dev Container feature -Alternatively, use the ["Desktop lite" Dev Container feature]( https://github.com/devcontainers/features/tree/main/src/desktop-lite )⮳ to install a light GUI manager{{hi:GUI manager}}. Add the following to `devcontainer.json`: +Alternatively, use the ["Desktop lite" Dev Container feature][desktop-lite-github]⮳ to install a light GUI manager{{hi:GUI manager}}. Add the following to `devcontainer.json`: ```json "features": { @@ -39,7 +39,7 @@ xdg-settings --list xdg-settings get default-web-browser ``` -Point your browser to `` and use `vscode` as the password. Open the HTML file of your choice with: +Point your browser to [http://localhost:6080][locahost:6080] and use `vscode` as the password. Open the HTML file of your choice with: ```bash xdg-open /cargo-target-rust_howto/target/doc/deps/index.html @@ -50,7 +50,11 @@ xdg-open /cargo-target-rust_howto/target/doc/deps/index.html - Add the target directory e.g. `/cargo-target-rust_howto/target` to the VS Code Explorer view (`File` > `Add Folder to Workspace...`), then right-click the `/cargo-target-rust_howto/target/doc` folder in the VS Code Explorer view and select `Download...` or use VS Code's built-in `Simple Browser` command. - Or install the `Live Server` or MS `Live Preview` VS Code extensions. +[desktop-lite-github]: https://github.com/devcontainers/features/tree/main/src/desktop-lite +[locahost:6080]: http://localhost:6080 {{#include ../refs/link-refs.md}} + diff --git a/src/contributing/index.md b/src/contributing/index.md index d774c544..79a3da16 100644 --- a/src/contributing/index.md +++ b/src/contributing/index.md @@ -4,11 +4,11 @@ This book is in its **early days**. Contributions, from small edits to whole cha It is also intended to be easy for (new) Rust programmers to contribute to and get involved with the Rust community. -Feel free to submit an issue or a pull request{{hi:pull request}} to the [repo][rust-howto-github]⮳. Draft pages are kept in [this folder][rust-howto-drafts]⮳. An informal (and very long) list of subjects we would like to cover is kept in the [topics of interest](topics_of_interest.md)⮳ page. +Feel free to submit an issue or a pull request{{hi:pull request}} to the [repo][rust-howto-github]⮳. Draft pages are kept in [this folder][rust-howto-drafts]⮳. An informal (and very long) list of subjects we would like to cover is kept in the [topics of interest][p-topics_of_interest]⮳ page. Embedded examples should be ideally _runnable_ on the [Rust playground][rust-playground-website]⮳ or at least directly copy-pasteable into Rust code. -This book's long-term goal is the coverage of the 'most commonly used' Rust crates, as defined by [`blessed.rs`][blessed-rs-website]{{hi:blessed.rs}}⮳, the most downloaded libraries in [`crates.io`][crates.io]{{hi:crates.io}}⮳, and 'high quality crates' per [`lib.rs`][lib-rs]{{hi:lib.rs}}⮳ [statistics][lib-rs-stats]⮳. Review [key crates](../key_crates.md){{hi:key crates}} for topic ideas. +This book's long-term goal is the coverage of the 'most commonly used' Rust crates, as defined by [`blessed.rs`][blessed-rs-website]{{hi:blessed.rs}}⮳, the most downloaded libraries in [`crates.io`][crates.io]{{hi:crates.io}}⮳, and 'high quality crates' per [`lib.rs`][lib-rs]{{hi:lib.rs}}⮳ [statistics][lib-rs-stats]⮳. Review [key crates][p-key_crates]⮳{{hi:key crates}} for topic ideas. Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in this book shall be licensed under the same terms than the rest of the book, without any additional restrictions or conditions. @@ -24,7 +24,11 @@ Please read [CONTRIBUTING.md][rust-howto-contributing] for more details. [![rust-howto-github][rust-howto-github-badge]][rust-howto-github] +[p-topics_of_interest]: topics_of_interest.md +[p-key_crates]: ../key_crates.md {{#include ../refs/link-refs.md}} + diff --git a/src/lang/attributes.md b/src/lang/attributes.md index 757e2166..69e6a08b 100644 --- a/src/lang/attributes.md +++ b/src/lang/attributes.md @@ -35,7 +35,7 @@ List of lint checks{{hi:Lint checks}}: `rustc -W help`. [`rustc`][rustc]{{hi:rus ## Automatic trait derivation -See [Automatic derivation](../standard_library/derive.md). +See [Automatic derivation][automatic-derivation]. ## Must Use @@ -63,6 +63,7 @@ See [Automatic derivation](../standard_library/derive.md). [Rust by example - attributes][book-rust-by-example-attributes]⮳ +[automatic-derivation]: ../standard_library/derive.md {{#include ../refs/link-refs.md}} diff --git a/src/lang/traits.md b/src/lang/traits.md index 2b634d23..066821d8 100644 --- a/src/lang/traits.md +++ b/src/lang/traits.md @@ -76,13 +76,15 @@ One restriction to note is that we can implement a trait on a type only if at le ## Async and traits -See [Async](../categories/asynchronous/index.md) +See [Async][p-async]⮳ ## See also [Traits (blog)][blog-traits]⮳ +[p-async]: ../categories/asynchronous/index.md {{#include ../refs/link-refs.md}} + diff --git a/src/links/blogs.md b/src/links/blogs.md index c38ae6fc..f4b4d736 100644 --- a/src/links/blogs.md +++ b/src/links/blogs.md @@ -5,23 +5,29 @@ [LukeMathWalker/zero-to-production: Code for \"Zero To Production In Rust\", a book on API development using Rust][book-zero-to-production]⮳ [![zero-to-production-github][book-zero-to-production-github-badge]][book-zero-to-production-github] {{#include ../refs/link-refs.md}} + diff --git a/src/links/books.md b/src/links/books.md index 02f0ecf6..cded3902 100644 --- a/src/links/books.md +++ b/src/links/books.md @@ -9,11 +9,16 @@ [The Rust Programming Language, 2nd Edition][book-rust-programming-language]⮳ {{#include ../refs/link-refs.md}} + diff --git a/src/links/companies.md b/src/links/companies.md index 92b11bef..0a8c8455 100644 --- a/src/links/companies.md +++ b/src/links/companies.md @@ -1,20 +1,22 @@ # Companies that use or contribute to Rust -[Mozilla][mozilla-website]⮳ +[Accelerant.dev][accelerant-website]⮳ -[Ferrous Systems][ferrous-systems-website]⮳ +[Cloudflare][cloudflare-website]⮳ [Embark Studios][embark-studios-website]⮳ +[Ferrous Systems][ferrous-systems-website]⮳ + [Freiheit][freiheit-website]⮳ +[Immunant][immunant-website]⮳ + +[Mozilla][mozilla-website]⮳ + {{#include ../refs/company-refs.md}} + diff --git a/src/links/example_code.md b/src/links/example_code.md index 96a9cce3..ad1c58f4 100644 --- a/src/links/example_code.md +++ b/src/links/example_code.md @@ -10,8 +10,11 @@ diff --git a/src/links/index.md b/src/links/index.md index c7043a73..3e8ca515 100644 --- a/src/links/index.md +++ b/src/links/index.md @@ -24,34 +24,51 @@ {{#include refs.incl.md}} {{#include ../refs/link-refs.md}} + diff --git a/src/other/cloud/index.md b/src/other/cloud/index.md index 828506d8..f60de952 100644 --- a/src/other/cloud/index.md +++ b/src/other/cloud/index.md @@ -6,36 +6,43 @@ [AWS Rust SDK][aws-rust-sdk-website]⮳ -⮳ +[Create Lambda functions with Rust][create-lambda-functions-with-rust]⮳ -⮳ +[aws-lambda-rust-runtime-examples][aws-lambda-rust-runtime-examples]⮳ -⮳ +[aws-doc-sdk-examples][aws-doc-sdk-examples]⮳ -## Dapr +[AWS rust][sustainability-with-rust] -[Dapr][dapr-website]⮳ is a portable, event-driven, serverless runtime for building distributed applications across cloud and edge. +[create-lambda-functions-with-rust]: https://docs.aws.amazon.com/sdk-for-rust/latest/dg/lambda.html +[sustainability-with-rust]: https://aws.amazon.com/blogs/opensource/sustainability-with-rust/ +[aws-lambda-rust-runtime-examples]: https://github.com/awslabs/aws-lambda-rust-runtime/tree/main/examples +[aws-doc-sdk-examples]: https://github.com/awsdocs/aws-doc-sdk-examples -Dapr SDK for Rust: [![dapr-rust-sdk-github][dapr-rust-sdk-github-badge]][dapr-rust-sdk-github] +## Serverless Rust -Dapr Rust SDK example: [![dapr-rust-examples][dapr-rust-examples-badge]][dapr-rust-examples] +- [serverless rust][serverless-rust]⮳ -{{#include refs.incl.md}} -{{#include ../../refs/link-refs.md}} -