mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-05-19 17:03:13 +02:00
Title-casing in section titles (#1557)
Fixes https://github.com/google/comprehensive-rust/issues/1552
This commit is contained in:
parent
1ec2e8db9e
commit
89b41555eb
@ -36,7 +36,7 @@
|
|||||||
- [Blocks and Scopes](control-flow-basics/blocks-and-scopes.md)
|
- [Blocks and Scopes](control-flow-basics/blocks-and-scopes.md)
|
||||||
- [Functions](control-flow-basics/functions.md)
|
- [Functions](control-flow-basics/functions.md)
|
||||||
- [Macros](control-flow-basics/macros.md)
|
- [Macros](control-flow-basics/macros.md)
|
||||||
- [Exercise: Collatz conjecture](control-flow-basics/exercise.md)
|
- [Exercise: Collatz Sequence](control-flow-basics/exercise.md)
|
||||||
- [Solution](control-flow-basics/solution.md)
|
- [Solution](control-flow-basics/solution.md)
|
||||||
|
|
||||||
# Day 1: Afternoon
|
# Day 1: Afternoon
|
||||||
@ -82,7 +82,7 @@
|
|||||||
- [Solution](methods-and-traits/solution.md)
|
- [Solution](methods-and-traits/solution.md)
|
||||||
- [Generics](generics.md)
|
- [Generics](generics.md)
|
||||||
- [Generic Functions](generics/generic-functions.md)
|
- [Generic Functions](generics/generic-functions.md)
|
||||||
- [Generic Data types](generics/generic-data.md)
|
- [Generic Data Types](generics/generic-data.md)
|
||||||
- [Trait Bounds](generics/trait-bounds.md)
|
- [Trait Bounds](generics/trait-bounds.md)
|
||||||
- [`impl Trait`](generics/impl-trait.md)
|
- [`impl Trait`](generics/impl-trait.md)
|
||||||
- [Exercise: Generic `min`](generics/exercise.md)
|
- [Exercise: Generic `min`](generics/exercise.md)
|
||||||
@ -121,7 +121,7 @@
|
|||||||
- [Review of Program Memory](memory-management/review.md)
|
- [Review of Program Memory](memory-management/review.md)
|
||||||
- [Approaches to Memory Management](memory-management/approaches.md)
|
- [Approaches to Memory Management](memory-management/approaches.md)
|
||||||
- [Ownership](memory-management/ownership.md)
|
- [Ownership](memory-management/ownership.md)
|
||||||
- [Move semantics](memory-management/move.md)
|
- [Move Semantics](memory-management/move.md)
|
||||||
- [`Clone`](memory-management/clone.md)
|
- [`Clone`](memory-management/clone.md)
|
||||||
- [Copy Types](memory-management/copy-types.md)
|
- [Copy Types](memory-management/copy-types.md)
|
||||||
- [`Drop`](memory-management/drop.md)
|
- [`Drop`](memory-management/drop.md)
|
||||||
@ -175,7 +175,7 @@
|
|||||||
- [Useful Crates](testing/useful-crates.md)
|
- [Useful Crates](testing/useful-crates.md)
|
||||||
- [GoogleTest](testing/googletest.md)
|
- [GoogleTest](testing/googletest.md)
|
||||||
- [Mocking](testing/mocking.md)
|
- [Mocking](testing/mocking.md)
|
||||||
- [Compiler lints and Clippy](testing/lints.md)
|
- [Compiler Lints and Clippy](testing/lints.md)
|
||||||
- [Exercise: Luhn Algorithm](testing/exercise.md)
|
- [Exercise: Luhn Algorithm](testing/exercise.md)
|
||||||
- [Solution](testing/solution.md)
|
- [Solution](testing/solution.md)
|
||||||
|
|
||||||
@ -184,7 +184,7 @@
|
|||||||
- [Welcome](welcome-day-4-afternoon.md)
|
- [Welcome](welcome-day-4-afternoon.md)
|
||||||
- [Error Handling](error-handling.md)
|
- [Error Handling](error-handling.md)
|
||||||
- [Panics](error-handling/panics.md)
|
- [Panics](error-handling/panics.md)
|
||||||
- [Try operator](error-handling/try.md)
|
- [Try Operator](error-handling/try.md)
|
||||||
- [Try Conversions](error-handling/try-conversions.md)
|
- [Try Conversions](error-handling/try-conversions.md)
|
||||||
- [`Error` Trait](error-handling/error.md)
|
- [`Error` Trait](error-handling/error.md)
|
||||||
- [`thiserror` and `anyhow`](error-handling/thiserror-and-anyhow.md)
|
- [`thiserror` and `anyhow`](error-handling/thiserror-and-anyhow.md)
|
||||||
@ -245,39 +245,39 @@
|
|||||||
|
|
||||||
- [Welcome](chromium.md)
|
- [Welcome](chromium.md)
|
||||||
- [Setup](chromium/setup.md)
|
- [Setup](chromium/setup.md)
|
||||||
- [Comparing Chromium and Cargo ecosystems](chromium/cargo.md)
|
- [Comparing Chromium and Cargo Ecosystems](chromium/cargo.md)
|
||||||
- [Policy](chromium/policy.md)
|
- [Policy](chromium/policy.md)
|
||||||
- [Build Rules](chromium/build-rules.md)
|
- [Build Rules](chromium/build-rules.md)
|
||||||
- [Unsafe code](chromium/build-rules/unsafe.md)
|
- [Unsafe Code](chromium/build-rules/unsafe.md)
|
||||||
- [Depending on Rust code from Chromium C++](chromium/build-rules/depending.md)
|
- [Depending on Rust Code from Chromium C++](chromium/build-rules/depending.md)
|
||||||
- [Visual Studio code](chromium/build-rules/vscode.md)
|
- [Visual Studio Code](chromium/build-rules/vscode.md)
|
||||||
- [Exercise](exercises/chromium/build-rules.md)
|
- [Exercise](exercises/chromium/build-rules.md)
|
||||||
- [Testing](chromium/testing.md)
|
- [Testing](chromium/testing.md)
|
||||||
- [`rust_gtest_interop` library](chromium/testing/rust-gtest-interop.md)
|
- [`rust_gtest_interop` Library](chromium/testing/rust-gtest-interop.md)
|
||||||
- [GN rules for Rust tests](chromium/testing/build-gn.md)
|
- [GN Rules for Rust Tests](chromium/testing/build-gn.md)
|
||||||
- [Exercise](exercises/chromium/testing.md)
|
- [Exercise](exercises/chromium/testing.md)
|
||||||
- [Interoperability with C++](chromium/interoperability-with-cpp.md)
|
- [Interoperability with C++](chromium/interoperability-with-cpp.md)
|
||||||
- [Example bindings](chromium/interoperability-with-cpp/example-bindings.md)
|
- [Example Bindings](chromium/interoperability-with-cpp/example-bindings.md)
|
||||||
- [Limitations of CXX](chromium/interoperability-with-cpp/limitations-of-cxx.md)
|
- [Limitations of CXX](chromium/interoperability-with-cpp/limitations-of-cxx.md)
|
||||||
- [CXX error handling](chromium/interoperability-with-cpp/error-handling.md)
|
- [CXX Error Handling](chromium/interoperability-with-cpp/error-handling.md)
|
||||||
- [Error handling: QR example](chromium/interoperability-with-cpp/error-handling-qr.md)
|
- [Error Handling: QR Example](chromium/interoperability-with-cpp/error-handling-qr.md)
|
||||||
- [Error handling: PNG example](chromium/interoperability-with-cpp/error-handling-png.md)
|
- [Error Handling: PNG Example](chromium/interoperability-with-cpp/error-handling-png.md)
|
||||||
- [Using CXX in Chromium](chromium/interoperability-with-cpp/using-cxx-in-chromium.md)
|
- [Using CXX in Chromium](chromium/interoperability-with-cpp/using-cxx-in-chromium.md)
|
||||||
- [Exercise](exercises/chromium/interoperability-with-cpp.md)
|
- [Exercise](exercises/chromium/interoperability-with-cpp.md)
|
||||||
- [Adding third party crates](chromium/adding-third-party-crates.md)
|
- [Adding Third Party Crates](chromium/adding-third-party-crates.md)
|
||||||
- [Configuring Cargo.toml](chromium/adding-third-party-crates/configuring-cargo-toml.md)
|
- [Configuring Cargo.toml](chromium/adding-third-party-crates/configuring-cargo-toml.md)
|
||||||
- [Configuring gnrt_config.toml](chromium/adding-third-party-crates/configuring-gnrt-config-toml.md)
|
- [Configuring `gnrt_config.toml`](chromium/adding-third-party-crates/configuring-gnrt-config-toml.md)
|
||||||
- [Downloading crates](chromium/adding-third-party-crates/downloading-crates.md)
|
- [Downloading Crates](chromium/adding-third-party-crates/downloading-crates.md)
|
||||||
- [Generating gn build rules](chromium/adding-third-party-crates/generating-gn-build-rules.md)
|
- [Generating `gn` Build Rules](chromium/adding-third-party-crates/generating-gn-build-rules.md)
|
||||||
- [Resolving problems](chromium/adding-third-party-crates/resolving-problems.md)
|
- [Resolving Problems](chromium/adding-third-party-crates/resolving-problems.md)
|
||||||
- [Build scripts which generate code](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md)
|
- [Build Scripts Which Generate Code](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md)
|
||||||
- [Build scripts which build C++ or take arbitrary actions](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md)
|
- [Build Scripts Which Build C++ or Take Arbitrary Actions](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md)
|
||||||
- [Depending on a crate](chromium/adding-third-party-crates/depending-on-a-crate.md)
|
- [Depending on a Crate](chromium/adding-third-party-crates/depending-on-a-crate.md)
|
||||||
- [Reviews and audits](chromium/adding-third-party-crates/reviews-and-audits.md)
|
- [Reviews and Audits](chromium/adding-third-party-crates/reviews-and-audits.md)
|
||||||
- [Checking into Chromium source code](chromium/adding-third-party-crates/checking-in.md)
|
- [Checking into Chromium Source Code](chromium/adding-third-party-crates/checking-in.md)
|
||||||
- [Keeping crates up to date](chromium/adding-third-party-crates/keeping-up-to-date.md)
|
- [Keeping Crates Up to Date](chromium/adding-third-party-crates/keeping-up-to-date.md)
|
||||||
- [Exercise](exercises/chromium/third-party.md)
|
- [Exercise](exercises/chromium/third-party.md)
|
||||||
- [Bringing it together - Exercise](exercises/chromium/bringing-it-together.md)
|
- [Bringing It Together - Exercise](exercises/chromium/bringing-it-together.md)
|
||||||
- [Exercise Solutions](exercises/chromium/solutions.md)
|
- [Exercise Solutions](exercises/chromium/solutions.md)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Adding third party crates
|
# Adding Third Party Crates
|
||||||
|
|
||||||
Rust libraries are called "crates" and are found at [crates.io][0]. It's *very
|
Rust libraries are called "crates" and are found at [crates.io][0]. It's *very
|
||||||
easy* for Rust crates to depend upon one another. So they do!
|
easy* for Rust crates to depend upon one another. So they do!
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Checking crates into Chromium source code
|
# Checking Crates into Chromium Source Code
|
||||||
|
|
||||||
`git status` should reveal:
|
`git status` should reveal:
|
||||||
* Crate code in `//third_party/rust/chromium_crates_io`
|
* Crate code in `//third_party/rust/chromium_crates_io`
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Depending on a crate
|
# Depending on a Crate
|
||||||
|
|
||||||
Once you've added a third-party crate and generated build rules,
|
Once you've added a third-party crate and generated build rules,
|
||||||
depending on a crate is simple. Find your `rust_static_library` target,
|
depending on a crate is simple. Find your `rust_static_library` target,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Downloading crates
|
# Downloading Crates
|
||||||
|
|
||||||
A tool called `gnrt` knows how to download crates and how to generate `BUILD.gn`
|
A tool called `gnrt` knows how to download crates and how to generate `BUILD.gn`
|
||||||
rules.
|
rules.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Generating `gn` build rules
|
# Generating `gn` Build Rules
|
||||||
|
|
||||||
Once you've downloaded the crate, generate the `BUILD.gn` files like this:
|
Once you've downloaded the crate, generate the `BUILD.gn` files like this:
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Keeping crates up to date
|
# Keeping Crates Up to Date
|
||||||
|
|
||||||
As the OWNER of any third party Chromium dependency, you are
|
As the OWNER of any third party Chromium dependency, you are
|
||||||
[expected to keep it up to date with any security fixes][0]. It is hoped
|
[expected to keep it up to date with any security fixes][0]. It is hoped
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Resolving problems
|
# Resolving Problems
|
||||||
|
|
||||||
If your build fails, it may be because of a `build.rs`: programs which do arbitrary
|
If your build fails, it may be because of a `build.rs`: programs which do arbitrary
|
||||||
things at build time. This is fundamentally at odds with the design of `gn`
|
things at build time. This is fundamentally at odds with the design of `gn`
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Build scripts which generate code
|
# Build Scripts Which Generate Code
|
||||||
|
|
||||||
If `ninja` complains about missing files, check the `build.rs` to see if it
|
If `ninja` complains about missing files, check the `build.rs` to see if it
|
||||||
writes source code files.
|
writes source code files.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Build scripts which build C++ or take arbitrary actions
|
# Build Scripts Which Build C++ or Take Arbitrary Actions
|
||||||
|
|
||||||
Some crates use the [`cc`][1] crate to build and link C/C++ libraries.
|
Some crates use the [`cc`][1] crate to build and link C/C++ libraries.
|
||||||
Other crates parse C/C++ using [`bindgen`][2] within their build scripts.
|
Other crates parse C/C++ using [`bindgen`][2] within their build scripts.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Auditing third party crates
|
# Auditing Third Party Crates
|
||||||
|
|
||||||
Adding new libraries is subject to Chromium's standard [policies][0], but of
|
Adding new libraries is subject to Chromium's standard [policies][0], but of
|
||||||
course also subject to security review. As you may be bringing in not just a single
|
course also subject to security review. As you may be bringing in not just a single
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Depending on Rust code from Chromium C++
|
# Depending on Rust Code from Chromium C++
|
||||||
|
|
||||||
Simply add the above target to the `deps` of some Chromium C++ target.
|
Simply add the above target to the `deps` of some Chromium C++ target.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Including `unsafe` Rust code
|
# Including `unsafe` Rust Code
|
||||||
|
|
||||||
Unsafe Rust code is forbidden in `rust_static_library` by default --- it won't
|
Unsafe Rust code is forbidden in `rust_static_library` by default --- it won't
|
||||||
compile. If you need unsafe Rust code, add `allow_unsafe = true` to the
|
compile. If you need unsafe Rust code, add `allow_unsafe = true` to the
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Visual Studio code
|
# Visual Studio Code
|
||||||
|
|
||||||
Types are elided in Rust code, which makes a good IDE even more useful than
|
Types are elided in Rust code, which makes a good IDE even more useful than
|
||||||
for C++. Visual Studio code works well for Rust in Chromium. To use it,
|
for C++. Visual Studio code works well for Rust in Chromium. To use it,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Comparing Chromium and Cargo ecosystems
|
# Comparing Chromium and Cargo Ecosystems
|
||||||
|
|
||||||
Rust community typically uses `cargo` and libraries from [crates.io][2].
|
Rust community typically uses `cargo` and libraries from [crates.io][2].
|
||||||
Chromium is built using `gn` and `ninja` and a curated set of dependencies.
|
Chromium is built using `gn` and `ninja` and a curated set of dependencies.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# CXX error handling: PNG example
|
# CXX Error Handling: PNG Example
|
||||||
|
|
||||||
A prototype of a PNG decoder illustrates what can be done when the successful
|
A prototype of a PNG decoder illustrates what can be done when the successful
|
||||||
result cannot be passed across the FFI boundary:
|
result cannot be passed across the FFI boundary:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# CXX error handling: QR example
|
# CXX Error Handling: QR Example
|
||||||
|
|
||||||
The QR code generator is [an example][0] where a boolean is used to communicate
|
The QR code generator is [an example][0] where a boolean is used to communicate
|
||||||
success vs failure, and where the successful result can be passed across the FFI
|
success vs failure, and where the successful result can be passed across the FFI
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# CXX error handling
|
# CXX Error Handling
|
||||||
|
|
||||||
CXX's [support for `Result<T,E>`][0] relies on C++ exceptions, so we can't use
|
CXX's [support for `Result<T,E>`][0] relies on C++ exceptions, so we can't use
|
||||||
that in Chromium. Alternatives:
|
that in Chromium. Alternatives:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Example bindings
|
# Example Bindings
|
||||||
|
|
||||||
CXX requires that the whole C++/Rust boundary is declared in `cxx::bridge`
|
CXX requires that the whole C++/Rust boundary is declared in `cxx::bridge`
|
||||||
modules inside `.rs` source code.
|
modules inside `.rs` source code.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# GN rules for Rust tests
|
# GN Rules for Rust Tests
|
||||||
|
|
||||||
The simplest way to build Rust `gtest` tests is to add them to an existing test
|
The simplest way to build Rust `gtest` tests is to add them to an existing test
|
||||||
binary that already contains tests authored in C++. For example:
|
binary that already contains tests authored in C++. For example:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# `rust_gtest_interop` library
|
# `rust_gtest_interop` Library
|
||||||
|
|
||||||
The [`rust_gtest_interop`][0] library provides a way to:
|
The [`rust_gtest_interop`][0] library provides a way to:
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# Bringing it together --- Exercise
|
# Bringing It Together --- Exercise
|
||||||
|
|
||||||
In this exercise, you're going to add a whole new Chromium feature, bringing
|
In this exercise, you're going to add a whole new Chromium feature, bringing
|
||||||
together everything you already learned.
|
together everything you already learned.
|
||||||
|
|
||||||
## The brief from Product Management
|
## The Brief from Product Management
|
||||||
|
|
||||||
A community of pixies has been discovered living in a remote rainforest.
|
A community of pixies has been discovered living in a remote rainforest.
|
||||||
It's important that we get Chromium for Pixies delivered to them as soon
|
It's important that we get Chromium for Pixies delivered to them as soon
|
||||||
|
Loading…
x
Reference in New Issue
Block a user