src/cargo/running-locally.md
If you want to experiment with the code on your own system, then you will need
to first install Rust. Do this by following the
instructions in the Rust Book. This should give you a working rustc and
cargo. At the time of writing, the latest stable Rust release has these
version numbers:
% rustc --version
rustc 1.69.0 (84c898d65 2023-04-16)
% cargo --version
cargo 1.69.0 (6e9a83356 2023-04-12)
You can use any later version too since Rust maintains backwards compatibility.
With this in place, follow these steps to build a Rust binary from one of the examples in this training:
Click the "Copy to clipboard" button on the example you want to copy.
Use cargo new exercise to create a new exercise/ directory for your code:
$ cargo new exercise
Created binary (application) `exercise` package
Navigate into exercise/ and use cargo run to build and run your binary:
$ cd exercise
$ cargo run
Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)
Finished dev [unoptimized + debuginfo] target(s) in 0.75s
Running `target/debug/exercise`
Hello, world!
Replace the boilerplate code in src/main.rs with your own code. For
example, using the example on the previous page, make src/main.rs look like
# // Copyright 2022 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
fn main() {
println!("Edit me!");
}
Use cargo run to build and run your updated binary:
$ cargo run
Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)
Finished dev [unoptimized + debuginfo] target(s) in 0.24s
Running `target/debug/exercise`
Edit me!
Use cargo check to quickly check your project for errors, use cargo build
to compile it without running it. You will find the output in target/debug/
for a normal debug build. Use cargo build --release to produce an optimized
release build in target/release/.
You can add dependencies for your project by editing Cargo.toml. When you
run cargo commands, it will automatically download and compile missing
dependencies for you.
Try to encourage the class participants to install Cargo and use a local editor. It will make their life easier since they will have a normal development environment.
</details>