summaryrefslogtreecommitdiffstats
path: root/src/doc/book/listings/ch03-common-programming-concepts
diff options
context:
space:
mode:
Diffstat (limited to 'src/doc/book/listings/ch03-common-programming-concepts')
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/src/main.rs3
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/src/main.rs11
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/output.txt9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/src/main.rs10
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/output.txt16
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/output.txt6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/output.txt6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/src/main.rs12
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/output.txt12
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/src/main.rs5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/src/main.rs17
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/src/main.rs5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/src/main.rs5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/src/main.rs3
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/src/main.rs9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/src/main.rs3
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/src/main.rs22
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/output.txt6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/src/main.rs9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.lock4
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/output.txt34
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/rustfmt-ignore1
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/src/main.rs3
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/src/main.rs8
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/src/main.rs9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/src/main.rs9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/output.txt14
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/src/main.rs9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/src/main.rs3
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/src/main.rs4
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/src/main.rs9
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/src/main.rs11
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/output.txt10
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/output.txt5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/src/main.rs13
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/output.txt12
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/src/main.rs7
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.lock5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/output.txt13
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/src/main.rs21
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/src/main.rs5
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/src/main.rs13
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.toml6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/src/main.rs6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.lock6
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.toml8
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/output.txt10
-rw-r--r--src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/src/main.rs3
143 files changed, 1000 insertions, 0 deletions
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/src/main.rs
new file mode 100644
index 000000000..b492d384f
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-01/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let y = 6;
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/output.txt
new file mode 100644
index 000000000..3eb8d102a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling branches v0.1.0 (file:///projects/branches)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.30s
+ Running `target/debug/branches`
+The value of number is: 5
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/src/main.rs
new file mode 100644
index 000000000..e021e41e8
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-02/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ let condition = true;
+ let number = if condition { 5 } else { 6 };
+
+ println!("The value of number is: {number}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.lock
new file mode 100644
index 000000000..9942b362a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/src/main.rs
new file mode 100644
index 000000000..ca070c759
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-03/src/main.rs
@@ -0,0 +1,11 @@
+fn main() {
+ let mut number = 3;
+
+ while number != 0 {
+ println!("{number}!");
+
+ number -= 1;
+ }
+
+ println!("LIFTOFF!!!");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.lock
new file mode 100644
index 000000000..9942b362a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/output.txt
new file mode 100644
index 000000000..35c0f804a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/output.txt
@@ -0,0 +1,9 @@
+$ cargo run
+ Compiling loops v0.1.0 (file:///projects/loops)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.32s
+ Running `target/debug/loops`
+the value is: 10
+the value is: 20
+the value is: 30
+the value is: 40
+the value is: 50
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/src/main.rs
new file mode 100644
index 000000000..38fd301e6
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-04/src/main.rs
@@ -0,0 +1,10 @@
+fn main() {
+ let a = [10, 20, 30, 40, 50];
+ let mut index = 0;
+
+ while index < 5 {
+ println!("the value is: {}", a[index]);
+
+ index += 1;
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.lock
new file mode 100644
index 000000000..9942b362a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/src/main.rs
new file mode 100644
index 000000000..b44e6b7aa
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/listing-03-05/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ let a = [10, 20, 30, 40, 50];
+
+ for element in a {
+ println!("the value is: {element}");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.lock
new file mode 100644
index 000000000..2d62cbe7a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "variables"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.toml
new file mode 100644
index 000000000..4da3b8150
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "variables"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/output.txt
new file mode 100644
index 000000000..ed87cb2c8
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/output.txt
@@ -0,0 +1,16 @@
+$ cargo run
+ Compiling variables v0.1.0 (file:///projects/variables)
+error[E0384]: cannot assign twice to immutable variable `x`
+ --> src/main.rs:4:5
+ |
+2 | let x = 5;
+ | -
+ | |
+ | first assignment to `x`
+ | help: consider making this binding mutable: `mut x`
+3 | println!("The value of x is: {x}");
+4 | x = 6;
+ | ^^^^^ cannot assign twice to immutable variable
+
+For more information about this error, try `rustc --explain E0384`.
+error: could not compile `variables` due to previous error
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/src/main.rs
new file mode 100644
index 000000000..d64f46de4
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-01-variables-are-immutable/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ let x = 5;
+ println!("The value of x is: {x}");
+ x = 6;
+ println!("The value of x is: {x}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.lock
new file mode 100644
index 000000000..2d62cbe7a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "variables"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.toml
new file mode 100644
index 000000000..4da3b8150
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "variables"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/output.txt
new file mode 100644
index 000000000..8ed6598ff
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/output.txt
@@ -0,0 +1,6 @@
+$ cargo run
+ Compiling variables v0.1.0 (file:///projects/variables)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.30s
+ Running `target/debug/variables`
+The value of x is: 5
+The value of x is: 6
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/src/main.rs
new file mode 100644
index 000000000..a57709ccf
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-02-adding-mut/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ let mut x = 5;
+ println!("The value of x is: {x}");
+ x = 6;
+ println!("The value of x is: {x}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.lock
new file mode 100644
index 000000000..2d62cbe7a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "variables"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.toml
new file mode 100644
index 000000000..4da3b8150
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "variables"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/output.txt
new file mode 100644
index 000000000..f310e9ffa
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/output.txt
@@ -0,0 +1,6 @@
+$ cargo run
+ Compiling variables v0.1.0 (file:///projects/variables)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.31s
+ Running `target/debug/variables`
+The value of x in the inner scope is: 12
+The value of x is: 6
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/src/main.rs
new file mode 100644
index 000000000..03924fe1c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-03-shadowing/src/main.rs
@@ -0,0 +1,12 @@
+fn main() {
+ let x = 5;
+
+ let x = x + 1;
+
+ {
+ let x = x * 2;
+ println!("The value of x in the inner scope is: {x}");
+ }
+
+ println!("The value of x is: {x}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.lock
new file mode 100644
index 000000000..2d62cbe7a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "variables"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.toml
new file mode 100644
index 000000000..4da3b8150
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "variables"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/src/main.rs
new file mode 100644
index 000000000..42589f548
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-04-shadowing-can-change-types/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ // ANCHOR: here
+ let spaces = " ";
+ let spaces = spaces.len();
+ // ANCHOR_END: here
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.lock
new file mode 100644
index 000000000..2d62cbe7a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "variables"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.toml
new file mode 100644
index 000000000..4da3b8150
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "variables"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/output.txt
new file mode 100644
index 000000000..31a07efc4
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/output.txt
@@ -0,0 +1,12 @@
+$ cargo run
+ Compiling variables v0.1.0 (file:///projects/variables)
+error[E0308]: mismatched types
+ --> src/main.rs:3:14
+ |
+2 | let mut spaces = " ";
+ | ----- expected due to this value
+3 | spaces = spaces.len();
+ | ^^^^^^^^^^^^ expected `&str`, found `usize`
+
+For more information about this error, try `rustc --explain E0308`.
+error: could not compile `variables` due to previous error
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/src/main.rs
new file mode 100644
index 000000000..f52635d0b
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-05-mut-cant-change-types/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ // ANCHOR: here
+ let mut spaces = " ";
+ spaces = spaces.len();
+ // ANCHOR_END: here
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.lock
new file mode 100644
index 000000000..3b40559a7
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "floating-point"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.toml
new file mode 100644
index 000000000..83610e756
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "floating-point"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/src/main.rs
new file mode 100644
index 000000000..6f4f0fe87
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-06-floating-point/src/main.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let x = 2.0; // f64
+
+ let y: f32 = 3.0; // f32
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.lock
new file mode 100644
index 000000000..94a12b255
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "numeric-operations"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.toml
new file mode 100644
index 000000000..b4bea55e3
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "numeric-operations"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/src/main.rs
new file mode 100644
index 000000000..9d3b4813b
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-07-numeric-operations/src/main.rs
@@ -0,0 +1,17 @@
+fn main() {
+ // addition
+ let sum = 5 + 10;
+
+ // subtraction
+ let difference = 95.5 - 4.3;
+
+ // multiplication
+ let product = 4 * 30;
+
+ // division
+ let quotient = 56.7 / 32.2;
+ let floored = 2 / 3; // Results in 0
+
+ // remainder
+ let remainder = 43 % 5;
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.lock
new file mode 100644
index 000000000..5d5728ebd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "boolean"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.toml
new file mode 100644
index 000000000..47e42cef8
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "boolean"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/src/main.rs
new file mode 100644
index 000000000..2c56e62f9
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-08-boolean/src/main.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let t = true;
+
+ let f: bool = false; // with explicit type annotation
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.lock
new file mode 100644
index 000000000..bb58446cc
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "char"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.toml
new file mode 100644
index 000000000..a1ef3b537
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "char"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/src/main.rs
new file mode 100644
index 000000000..4921cc998
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-09-char/src/main.rs
@@ -0,0 +1,5 @@
+fn main() {
+ let c = 'z';
+ let z: char = 'ℤ'; // with explicit type annotation
+ let heart_eyed_cat = '😻';
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.lock
new file mode 100644
index 000000000..f57f0767c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "tuples"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.toml
new file mode 100644
index 000000000..9b0879c2c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "tuples"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/src/main.rs
new file mode 100644
index 000000000..b7b51fb2f
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-10-tuples/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let tup: (i32, f64, u8) = (500, 6.4, 1);
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.lock
new file mode 100644
index 000000000..f57f0767c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "tuples"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.toml
new file mode 100644
index 000000000..9b0879c2c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "tuples"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/src/main.rs
new file mode 100644
index 000000000..3002bdde4
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-11-destructuring-tuples/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ let tup = (500, 6.4, 1);
+
+ let (x, y, z) = tup;
+
+ println!("The value of y is: {y}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.lock
new file mode 100644
index 000000000..f57f0767c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "tuples"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.toml
new file mode 100644
index 000000000..9b0879c2c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "tuples"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/src/main.rs
new file mode 100644
index 000000000..1b1e646fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-12-tuple-indexing/src/main.rs
@@ -0,0 +1,9 @@
+fn main() {
+ let x: (i32, f64, u8) = (500, 6.4, 1);
+
+ let five_hundred = x.0;
+
+ let six_point_four = x.1;
+
+ let one = x.2;
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.lock
new file mode 100644
index 000000000..68e3c5967
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "arrays"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.toml
new file mode 100644
index 000000000..96be3e2b1
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "arrays"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/src/main.rs
new file mode 100644
index 000000000..d475901ce
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-13-arrays/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let a = [1, 2, 3, 4, 5];
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.lock
new file mode 100644
index 000000000..68e3c5967
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "arrays"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.toml
new file mode 100644
index 000000000..96be3e2b1
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "arrays"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/src/main.rs
new file mode 100644
index 000000000..d33e3174f
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-14-array-indexing/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ let a = [1, 2, 3, 4, 5];
+
+ let first = a[0];
+ let second = a[1];
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.lock
new file mode 100644
index 000000000..68e3c5967
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "arrays"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.toml
new file mode 100644
index 000000000..96be3e2b1
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "arrays"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/src/main.rs
new file mode 100644
index 000000000..b634c9378
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-15-invalid-array-access/src/main.rs
@@ -0,0 +1,22 @@
+use std::io;
+
+fn main() {
+ let a = [1, 2, 3, 4, 5];
+
+ println!("Please enter an array index.");
+
+ let mut index = String::new();
+
+ io::stdin()
+ .read_line(&mut index)
+ .expect("Failed to read line");
+
+ let index: usize = index
+ .trim()
+ .parse()
+ .expect("Index entered was not a number");
+
+ let element = a[index];
+
+ println!("The value of the element at index {index} is: {element}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/output.txt
new file mode 100644
index 000000000..723fad32a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/output.txt
@@ -0,0 +1,6 @@
+$ cargo run
+ Compiling functions v0.1.0 (file:///projects/functions)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.28s
+ Running `target/debug/functions`
+Hello, world!
+Another function.
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/src/main.rs
new file mode 100644
index 000000000..38be8565b
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-16-functions/src/main.rs
@@ -0,0 +1,9 @@
+fn main() {
+ println!("Hello, world!");
+
+ another_function();
+}
+
+fn another_function() {
+ println!("Another function.");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/output.txt
new file mode 100644
index 000000000..546bbc047
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling functions v0.1.0 (file:///projects/functions)
+ Finished dev [unoptimized + debuginfo] target(s) in 1.21s
+ Running `target/debug/functions`
+The value of x is: 5
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/src/main.rs
new file mode 100644
index 000000000..108da4f81
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-17-functions-with-parameters/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ another_function(5);
+}
+
+fn another_function(x: i32) {
+ println!("The value of x is: {x}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/output.txt
new file mode 100644
index 000000000..6210234c9
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling functions v0.1.0 (file:///projects/functions)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.31s
+ Running `target/debug/functions`
+The measurement is: 5h
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/src/main.rs
new file mode 100644
index 000000000..b070ccb23
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-18-functions-with-multiple-parameters/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ print_labeled_measurement(5, 'h');
+}
+
+fn print_labeled_measurement(value: i32, unit_label: char) {
+ println!("The measurement is: {value}{unit_label}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.lock
new file mode 100644
index 000000000..89a654d69
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.lock
@@ -0,0 +1,4 @@
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/output.txt
new file mode 100644
index 000000000..a5a85f4f6
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/output.txt
@@ -0,0 +1,34 @@
+$ cargo run
+ Compiling functions v0.1.0 (file:///projects/functions)
+error: expected expression, found statement (`let`)
+ --> src/main.rs:2:14
+ |
+2 | let x = (let y = 6);
+ | ^^^^^^^^^
+ |
+ = note: variable declaration using `let` is a statement
+
+error[E0658]: `let` expressions in this position are unstable
+ --> src/main.rs:2:14
+ |
+2 | let x = (let y = 6);
+ | ^^^^^^^^^
+ |
+ = note: see issue #53667 <https://github.com/rust-lang/rust/issues/53667> for more information
+
+warning: unnecessary parentheses around assigned value
+ --> src/main.rs:2:13
+ |
+2 | let x = (let y = 6);
+ | ^ ^
+ |
+ = note: `#[warn(unused_parens)]` on by default
+help: remove these parentheses
+ |
+2 - let x = (let y = 6);
+2 + let x = let y = 6;
+ |
+
+For more information about this error, try `rustc --explain E0658`.
+warning: `functions` (bin "functions") generated 1 warning
+error: could not compile `functions` due to 2 previous errors; 1 warning emitted
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/rustfmt-ignore b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/rustfmt-ignore
new file mode 100644
index 000000000..06a976dd4
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/rustfmt-ignore
@@ -0,0 +1 @@
+This listing deliberately doesn't parse so rustfmt fails.
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/src/main.rs
new file mode 100644
index 000000000..988f9653e
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-19-statements-vs-expressions/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let x = (let y = 6);
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/src/main.rs
new file mode 100644
index 000000000..64b873297
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-20-blocks-are-expressions/src/main.rs
@@ -0,0 +1,8 @@
+fn main() {
+ let y = {
+ let x = 3;
+ x + 1
+ };
+
+ println!("The value of y is: {y}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/output.txt
new file mode 100644
index 000000000..a457e3399
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling functions v0.1.0 (file:///projects/functions)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.30s
+ Running `target/debug/functions`
+The value of x is: 5
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/src/main.rs
new file mode 100644
index 000000000..a11af7ec7
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-21-function-return-values/src/main.rs
@@ -0,0 +1,9 @@
+fn five() -> i32 {
+ 5
+}
+
+fn main() {
+ let x = five();
+
+ println!("The value of x is: {x}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/src/main.rs
new file mode 100644
index 000000000..da9d0ddb3
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-22-function-parameter-and-return/src/main.rs
@@ -0,0 +1,9 @@
+fn main() {
+ let x = plus_one(5);
+
+ println!("The value of x is: {x}");
+}
+
+fn plus_one(x: i32) -> i32 {
+ x + 1
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.lock
new file mode 100644
index 000000000..88287d136
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "functions"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.toml
new file mode 100644
index 000000000..478b346fd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "functions"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/output.txt
new file mode 100644
index 000000000..c0484ea1b
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/output.txt
@@ -0,0 +1,14 @@
+$ cargo run
+ Compiling functions v0.1.0 (file:///projects/functions)
+error[E0308]: mismatched types
+ --> src/main.rs:7:24
+ |
+7 | fn plus_one(x: i32) -> i32 {
+ | -------- ^^^ expected `i32`, found `()`
+ | |
+ | implicitly returns `()` as its body has no tail or `return` expression
+8 | x + 1;
+ | - help: remove this semicolon
+
+For more information about this error, try `rustc --explain E0308`.
+error: could not compile `functions` due to previous error
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/src/main.rs
new file mode 100644
index 000000000..1cec800b6
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-23-statements-dont-return-values/src/main.rs
@@ -0,0 +1,9 @@
+fn main() {
+ let x = plus_one(5);
+
+ println!("The value of x is: {x}");
+}
+
+fn plus_one(x: i32) -> i32 {
+ x + 1;
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.lock
new file mode 100644
index 000000000..a289136a6
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "comments"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.toml
new file mode 100644
index 000000000..e0576b5dc
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "comments"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/src/main.rs
new file mode 100644
index 000000000..535f4b993
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-24-comments-end-of-line/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let lucky_number = 7; // I’m feeling lucky today
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.lock
new file mode 100644
index 000000000..a289136a6
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "comments"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.toml
new file mode 100644
index 000000000..e0576b5dc
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "comments"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/src/main.rs
new file mode 100644
index 000000000..81cd93559
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-25-comments-above-line/src/main.rs
@@ -0,0 +1,4 @@
+fn main() {
+ // I’m feeling lucky today
+ let lucky_number = 7;
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/output.txt
new file mode 100644
index 000000000..3d8c7dc33
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling branches v0.1.0 (file:///projects/branches)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.31s
+ Running `target/debug/branches`
+condition was true
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/src/main.rs
new file mode 100644
index 000000000..e64a42adf
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-26-if-true/src/main.rs
@@ -0,0 +1,9 @@
+fn main() {
+ let number = 3;
+
+ if number < 5 {
+ println!("condition was true");
+ } else {
+ println!("condition was false");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/output.txt
new file mode 100644
index 000000000..e40da961c
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling branches v0.1.0 (file:///projects/branches)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.31s
+ Running `target/debug/branches`
+condition was false
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/src/main.rs
new file mode 100644
index 000000000..f7d76cf55
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-27-if-false/src/main.rs
@@ -0,0 +1,11 @@
+fn main() {
+ // ANCHOR: here
+ let number = 7;
+ // ANCHOR_END: here
+
+ if number < 5 {
+ println!("condition was true");
+ } else {
+ println!("condition was false");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/output.txt
new file mode 100644
index 000000000..735bfe758
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/output.txt
@@ -0,0 +1,10 @@
+$ cargo run
+ Compiling branches v0.1.0 (file:///projects/branches)
+error[E0308]: mismatched types
+ --> src/main.rs:4:8
+ |
+4 | if number {
+ | ^^^^^^ expected `bool`, found integer
+
+For more information about this error, try `rustc --explain E0308`.
+error: could not compile `branches` due to previous error
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/src/main.rs
new file mode 100644
index 000000000..bc4af767b
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-28-if-condition-must-be-bool/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ let number = 3;
+
+ if number {
+ println!("number was three");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/src/main.rs
new file mode 100644
index 000000000..704650f46
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-29-if-not-equal-0/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ let number = 3;
+
+ if number != 0 {
+ println!("number was something other than zero");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/output.txt
new file mode 100644
index 000000000..b218941ad
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/output.txt
@@ -0,0 +1,5 @@
+$ cargo run
+ Compiling branches v0.1.0 (file:///projects/branches)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.31s
+ Running `target/debug/branches`
+number is divisible by 3
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/src/main.rs
new file mode 100644
index 000000000..d0ef9b2c1
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-30-else-if/src/main.rs
@@ -0,0 +1,13 @@
+fn main() {
+ let number = 6;
+
+ if number % 4 == 0 {
+ println!("number is divisible by 4");
+ } else if number % 3 == 0 {
+ println!("number is divisible by 3");
+ } else if number % 2 == 0 {
+ println!("number is divisible by 2");
+ } else {
+ println!("number is not divisible by 4, 3, or 2");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.lock
new file mode 100644
index 000000000..4ca0c2dbd
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "branches"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.toml
new file mode 100644
index 000000000..659645556
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "branches"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/output.txt
new file mode 100644
index 000000000..e922acd29
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/output.txt
@@ -0,0 +1,12 @@
+$ cargo run
+ Compiling branches v0.1.0 (file:///projects/branches)
+error[E0308]: `if` and `else` have incompatible types
+ --> src/main.rs:4:44
+ |
+4 | let number = if condition { 5 } else { "six" };
+ | - ^^^^^ expected integer, found `&str`
+ | |
+ | expected because of this
+
+For more information about this error, try `rustc --explain E0308`.
+error: could not compile `branches` due to previous error
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/src/main.rs
new file mode 100644
index 000000000..df7068bcf
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-31-arms-must-return-same-type/src/main.rs
@@ -0,0 +1,7 @@
+fn main() {
+ let condition = true;
+
+ let number = if condition { 5 } else { "six" };
+
+ println!("The value of number is: {number}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.lock
new file mode 100644
index 000000000..f73867315
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.lock
@@ -0,0 +1,5 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/output.txt
new file mode 100644
index 000000000..d4d322fb4
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/output.txt
@@ -0,0 +1,13 @@
+$ cargo run
+ Compiling loops v0.1.0 (file:///projects/loops)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.58s
+ Running `target/debug/loops`
+count = 0
+remaining = 10
+remaining = 9
+count = 1
+remaining = 10
+remaining = 9
+count = 2
+remaining = 10
+End count = 2
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/src/main.rs
new file mode 100644
index 000000000..dd8856403
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-5-loop-labels/src/main.rs
@@ -0,0 +1,21 @@
+fn main() {
+ let mut count = 0;
+ 'counting_up: loop {
+ println!("count = {count}");
+ let mut remaining = 10;
+
+ loop {
+ println!("remaining = {remaining}");
+ if remaining == 9 {
+ break;
+ }
+ if count == 2 {
+ break 'counting_up;
+ }
+ remaining -= 1;
+ }
+
+ count += 1;
+ }
+ println!("End count = {count}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.lock
new file mode 100644
index 000000000..9942b362a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/src/main.rs
new file mode 100644
index 000000000..f1692e462
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-32-loop/src/main.rs
@@ -0,0 +1,5 @@
+fn main() {
+ loop {
+ println!("again!");
+ }
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.lock
new file mode 100644
index 000000000..9942b362a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/src/main.rs
new file mode 100644
index 000000000..683d18bc1
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-33-return-value-from-loop/src/main.rs
@@ -0,0 +1,13 @@
+fn main() {
+ let mut counter = 0;
+
+ let result = loop {
+ counter += 1;
+
+ if counter == 10 {
+ break counter * 2;
+ }
+ };
+
+ println!("The result is {result}");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.lock
new file mode 100644
index 000000000..9942b362a
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "loops"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.toml
new file mode 100644
index 000000000..810e8bbc0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "loops"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/src/main.rs
new file mode 100644
index 000000000..df5b305bc
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/no-listing-34-for-range/src/main.rs
@@ -0,0 +1,6 @@
+fn main() {
+ for number in (1..4).rev() {
+ println!("{number}!");
+ }
+ println!("LIFTOFF!!!");
+}
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.lock b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.lock
new file mode 100644
index 000000000..b5664bc33
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.lock
@@ -0,0 +1,6 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+[[package]]
+name = "no_type_annotations"
+version = "0.1.0"
+
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.toml b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.toml
new file mode 100644
index 000000000..8ad4d5aa6
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "no_type_annotations"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/output.txt b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/output.txt
new file mode 100644
index 000000000..d9807cee0
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/output.txt
@@ -0,0 +1,10 @@
+$ cargo build
+ Compiling no_type_annotations v0.1.0 (file:///projects/no_type_annotations)
+error[E0282]: type annotations needed
+ --> src/main.rs:2:9
+ |
+2 | let guess = "42".parse().expect("Not a number!");
+ | ^^^^^ consider giving `guess` a type
+
+For more information about this error, try `rustc --explain E0282`.
+error: could not compile `no_type_annotations` due to previous error
diff --git a/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/src/main.rs b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/src/main.rs
new file mode 100644
index 000000000..f41c55805
--- /dev/null
+++ b/src/doc/book/listings/ch03-common-programming-concepts/output-only-01-no-type-annotations/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ let guess = "42".parse().expect("Not a number!");
+}