diff --git a/po/da.po b/po/da.po
index 10152c0f..25642023 100644
--- a/po/da.po
+++ b/po/da.po
@@ -675,22 +675,20 @@ msgid "With Java"
msgstr ""
#: src/SUMMARY.md:207
-#, fuzzy
msgid "Bare Metal: Morning"
-msgstr "Dag 1: Formiddag"
+msgstr "Rå jern: Formiddag"
#: src/SUMMARY.md:212
msgid "no_std"
-msgstr ""
+msgstr "no_std"
#: src/SUMMARY.md:213
-#, fuzzy
msgid "A Minimal Example"
-msgstr "Et little eksempel"
+msgstr "Et minimalt eksempel"
#: src/SUMMARY.md:214
msgid "alloc"
-msgstr ""
+msgstr "alloc"
#: src/SUMMARY.md:215
msgid "Microcontrollers"
@@ -698,11 +696,11 @@ msgstr ""
#: src/SUMMARY.md:216
msgid "Raw MMIO"
-msgstr ""
+msgstr "Rå MMIO"
#: src/SUMMARY.md:217
msgid "PACs"
-msgstr ""
+msgstr "PAC'er"
#: src/SUMMARY.md:218
msgid "HAL Crates"
@@ -718,29 +716,27 @@ msgstr ""
#: src/SUMMARY.md:221
msgid "embedded-hal"
-msgstr ""
+msgstr "embedded-hal"
#: src/SUMMARY.md:222
msgid "probe-rs, cargo-embed"
-msgstr ""
+msgstr "probe-rs, cargo-embed"
#: src/SUMMARY.md:223
msgid "Debugging"
-msgstr ""
+msgstr "Debugning"
#: src/SUMMARY.md:224 src/SUMMARY.md:242
msgid "Other Projects"
-msgstr ""
+msgstr "Andre projekter"
#: src/SUMMARY.md:226
-#, fuzzy
msgid "Compass"
-msgstr "Sammenligning"
+msgstr "Kompas"
#: src/SUMMARY.md:228
-#, fuzzy
msgid "Bare Metal: Afternoon"
-msgstr "Dag 1: Eftermiddag"
+msgstr "Rå jern: Eftermiddag"
#: src/SUMMARY.md:230
msgid "Application Processors"
@@ -752,7 +748,7 @@ msgstr ""
#: src/SUMMARY.md:232
msgid "MMIO"
-msgstr ""
+msgstr "MMIO"
#: src/SUMMARY.md:233
msgid "Let's Write a UART Driver"
@@ -768,7 +764,7 @@ msgstr ""
#: src/SUMMARY.md:236
msgid "Bitflags"
-msgstr ""
+msgstr "Bitflag"
#: src/SUMMARY.md:237
msgid "Multiple Registers"
@@ -776,12 +772,11 @@ msgstr ""
#: src/SUMMARY.md:238
msgid "Driver"
-msgstr ""
+msgstr "Driver"
#: src/SUMMARY.md:239 src/SUMMARY.md:241
-#, fuzzy
msgid "Using It"
-msgstr "Brug af Cargo"
+msgstr "Anvendelse"
#: src/SUMMARY.md:243
msgid "Useful Crates"
@@ -789,27 +784,27 @@ msgstr ""
#: src/SUMMARY.md:244
msgid "zerocopy"
-msgstr ""
+msgstr "zerocopy"
#: src/SUMMARY.md:245
msgid "aarch64-paging"
-msgstr ""
+msgstr "aarch64-paging"
#: src/SUMMARY.md:246
msgid "buddy_system_allocator"
-msgstr ""
+msgstr "buddy_system_allocator"
#: src/SUMMARY.md:247
msgid "tinyvec"
-msgstr ""
+msgstr "tinyvec"
#: src/SUMMARY.md:248
msgid "spin"
-msgstr ""
+msgstr "spin"
#: src/SUMMARY.md:250
msgid "vmbase"
-msgstr ""
+msgstr "vmbase"
#: src/SUMMARY.md:252
msgid "RTC Driver"
@@ -821,7 +816,7 @@ msgstr ""
#: src/SUMMARY.md:260
msgid "Threads"
-msgstr ""
+msgstr "Tråde"
#: src/SUMMARY.md:261
msgid "Scoped Threads"
@@ -829,43 +824,43 @@ msgstr ""
#: src/SUMMARY.md:262
msgid "Channels"
-msgstr ""
+msgstr "Kanaler"
#: src/SUMMARY.md:263
msgid "Unbounded Channels"
-msgstr ""
+msgstr "Ubegrænsede kanaler"
#: src/SUMMARY.md:264
msgid "Bounded Channels"
-msgstr ""
+msgstr "Begrænsede kanaler"
#: src/SUMMARY.md:265
msgid "Send and Sync"
-msgstr ""
+msgstr "Send og Sync"
#: src/SUMMARY.md:265
msgid "Send"
-msgstr ""
+msgstr "Send"
#: src/SUMMARY.md:265
msgid "Sync"
-msgstr ""
+msgstr "Sync"
#: src/SUMMARY.md:268
msgid "Examples"
-msgstr ""
+msgstr "Eksempler"
#: src/SUMMARY.md:269
msgid "Shared State"
-msgstr ""
+msgstr "Delt tilstand"
#: src/SUMMARY.md:270
msgid "Arc"
-msgstr ""
+msgstr "Arc"
#: src/SUMMARY.md:271
msgid "Mutex"
-msgstr ""
+msgstr "Mutex"
#: src/SUMMARY.md:274 src/SUMMARY.md:294
msgid "Dining Philosophers"
@@ -873,7 +868,7 @@ msgstr ""
#: src/SUMMARY.md:275
msgid "Multi-threaded Link Checker"
-msgstr ""
+msgstr "Flertrådet linktjekker"
#: src/SUMMARY.md:277
#, fuzzy
@@ -886,7 +881,7 @@ msgstr ""
#: src/SUMMARY.md:280
msgid "async/await"
-msgstr ""
+msgstr "async/await"
#: src/SUMMARY.md:281
msgid "Futures"
@@ -899,7 +894,7 @@ msgstr "Garantier under programudføring"
#: src/SUMMARY.md:283
msgid "Tokio"
-msgstr ""
+msgstr "Tokio"
#: src/SUMMARY.md:284
msgid "Tasks"
@@ -907,15 +902,15 @@ msgstr ""
#: src/SUMMARY.md:285
msgid "Async Channels"
-msgstr ""
+msgstr "Asynkrone kanaler"
#: src/SUMMARY.md:287
msgid "Join"
-msgstr ""
+msgstr "Join"
#: src/SUMMARY.md:288
msgid "Select"
-msgstr ""
+msgstr "Select"
#: src/SUMMARY.md:289
msgid "Pitfalls"
@@ -927,7 +922,7 @@ msgstr ""
#: src/SUMMARY.md:291
msgid "Pin"
-msgstr ""
+msgstr "Pin"
#: src/SUMMARY.md:292
msgid "Async Traits"
@@ -943,11 +938,11 @@ msgstr ""
#: src/SUMMARY.md:302
msgid "Thanks!"
-msgstr ""
+msgstr "Tak!"
#: src/SUMMARY.md:303
msgid "Other Resources"
-msgstr ""
+msgstr "Andre resourcer"
#: src/SUMMARY.md:304
msgid "Credits"
@@ -955,7 +950,7 @@ msgstr ""
#: src/SUMMARY.md:307
msgid "Solutions"
-msgstr ""
+msgstr "Løsninger"
#: src/SUMMARY.md:312
msgid "Day 1 Morning"
@@ -1048,7 +1043,6 @@ msgid ""
msgstr ""
#: src/welcome.md:7
-#, fuzzy
msgid ""
"This is a three day Rust course developed by the Android team. The course "
"covers\n"
@@ -1057,7 +1051,7 @@ msgid ""
"and error handling. It also includes Android-specific content on the last "
"day."
msgstr ""
-"Dette er et fire dages Rust-kursus udviklet af Android-teamet. Kurset\n"
+"Dette er et tre dages Rust-kursus udviklet af Android-teamet. Kurset\n"
"dækker hele spektret af Rust, fra grundlæggende syntaks til avancerede\n"
"emner som generiske og fejlhåndtering. Det inkluderer også\n"
"Android-specifikt indhold på den sidste dag."
@@ -1129,7 +1123,7 @@ msgstr ""
#: src/welcome.md:41
msgid "## Assumptions"
-msgstr ""
+msgstr "## Antagelser"
#: src/welcome.md:43
msgid ""
@@ -1242,7 +1236,7 @@ msgstr ""
#: src/exercises/concurrency/afternoon.md:11
#: src/exercises/concurrency/dining-philosophers-async.md:75
msgid ""
-msgstr ""
+msgstr ""
#: src/welcome.md:52
msgid ""
@@ -1349,7 +1343,7 @@ msgstr ""
#: src/exercises/concurrency/afternoon.md:17
#: src/exercises/concurrency/dining-philosophers-async.md:79
msgid " "
-msgstr ""
+msgstr " "
#: src/running-the-course.md:1
msgid "# Running the Course"
@@ -2549,6 +2543,8 @@ msgid ""
"\n"
"Key points:"
msgstr ""
+" \n"
+"Nøglepunkter:"
#: src/basic-syntax/references.md:24
msgid ""
@@ -2925,7 +2921,7 @@ msgstr ""
#: src/exercises/day-1/morning.md:1
msgid "# Day 1: Morning Exercises"
-msgstr ""
+msgstr "# Dag 1: morgenøvelser"
#: src/exercises/day-1/morning.md:3
msgid "In these exercises, we will explore two parts of Rust:"
@@ -3894,7 +3890,6 @@ msgid "After move to `s2`:"
msgstr ""
#: src/ownership/moved-strings-rust.md:32
-#, fuzzy
msgid ""
"```bob\n"
" Stack Heap\n"
@@ -3919,15 +3914,22 @@ msgid ""
msgstr ""
"```bob\n"
" Stak Bunke\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - -.\n"
-": : : :\n"
-": s1 : : :\n"
-": +-----------+-------+ : : +----+----+----+----+----+ :\n"
-": | ptr | o---+---+-----+-->| H | a | l | l | o | :\n"
-": | len | 5 | : : +----+----+----+----+----+ :\n"
-": | capacity | 5 | : : :\n"
-": +-----------+-------+ : : :\n"
-": : `- - - - - - - - - - - - - - - -'\n"
+".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - -.\n"
+": : : :\n"
+": s1 \"(utilgængelig)\" : : :\n"
+": +-----------+-------+ : : +----+----+----+----+ :\n"
+": | ptr | o---+---+--+--+-->| R | u | s | t | :\n"
+": | len | 4 | : | : +----+----+----+----+ :\n"
+": | capacity | 4 | : | : :\n"
+": +-----------+-------+ : | : :\n"
+": : | `- - - - - - - - - - - - - -'\n"
+": s2 : |\n"
+": +-----------+-------+ : |\n"
+": | ptr | o---+---+--'\n"
+": | len | 4 | :\n"
+": | capacity | 4 | :\n"
+": +-----------+-------+ :\n"
+": :\n"
"`- - - - - - - - - - - - - -'\n"
"```"
@@ -3980,7 +3982,6 @@ msgid "After copy-assignment:"
msgstr ""
#: src/ownership/double-free-modern-cpp.md:32
-#, fuzzy
msgid ""
"```bob\n"
" Stack Heap\n"
@@ -4005,15 +4006,22 @@ msgid ""
msgstr ""
"```bob\n"
" Stak Bunke\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - -.\n"
-": : : :\n"
-": s1 : : :\n"
-": +-----------+-------+ : : +----+----+----+----+----+ :\n"
-": | ptr | o---+---+-----+-->| H | a | l | l | o | :\n"
-": | len | 5 | : : +----+----+----+----+----+ :\n"
-": | capacity | 5 | : : :\n"
-": +-----------+-------+ : : :\n"
-": : `- - - - - - - - - - - - - - - -'\n"
+".- - - - - - - - - - - - - -. .- - - - - - - - - - - -.\n"
+": : : :\n"
+": s1 : : :\n"
+": +-----------+-------+ : : +----+----+----+ :\n"
+": | ptr | o---+---+--+--+-->| C | p | p | :\n"
+": | len | 3 | : : +----+----+----+ :\n"
+": | capacity | 3 | : : :\n"
+": +-----------+-------+ : : :\n"
+": : : :\n"
+": s2 : : :\n"
+": +-----------+-------+ : : +----+----+----+ :\n"
+": | ptr | o---+---+-----+-->| C | p | p | :\n"
+": | len | 3 | : : +----+----+----+ :\n"
+": | capacity | 3 | : : :\n"
+": +-----------+-------+ : : :\n"
+": : `- - - - - - - - - - - -'\n"
"`- - - - - - - - - - - - - -'\n"
"```"
@@ -4554,7 +4562,7 @@ msgstr ""
#: src/exercises/day-1/iterators-and-ownership.md:8
msgid "## `Iterator`"
-msgstr ""
+msgstr "## `Iterator`"
#: src/exercises/day-1/iterators-and-ownership.md:10
msgid ""
@@ -4616,7 +4624,7 @@ msgstr ""
#: src/exercises/day-1/iterators-and-ownership.md:48
msgid "## `IntoIterator`"
-msgstr ""
+msgstr "## `IntoIterator`"
#: src/exercises/day-1/iterators-and-ownership.md:50
msgid ""
@@ -4675,7 +4683,7 @@ msgstr ""
#: src/exercises/day-1/iterators-and-ownership.md:83
msgid "## `for` Loops"
-msgstr ""
+msgstr "## `for`-løkker"
#: src/exercises/day-1/iterators-and-ownership.md:85
msgid ""
@@ -4785,6 +4793,8 @@ msgid ""
"\n"
"Key Points: "
msgstr ""
+"\n"
+"Nøglepunkter: "
#: src/structs.md:32
msgid ""
@@ -5671,7 +5681,7 @@ msgstr ""
#: src/exercises/day-2/morning.md:1
msgid "# Day 2: Morning Exercises"
-msgstr ""
+msgstr "# Dag 2: morgenøvelser"
#: src/exercises/day-2/morning.md:3
msgid "We will look at implementing methods in two contexts:"
@@ -6736,7 +6746,6 @@ msgid ""
msgstr ""
#: src/std/box-recursive.md:18
-#, fuzzy
msgid ""
"```bob\n"
" Stack Heap\n"
@@ -6758,17 +6767,16 @@ msgid ""
"```"
msgstr ""
"```bob\n"
-" Stak Bunke\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - -.\n"
-": : : :\n"
-": s1 : : :\n"
-": +-----------+-------+ : : +----+----+----+----+----+ :\n"
-": | ptr | o---+---+-----+-->| H | a | l | l | o | :\n"
-": | len | 5 | : : +----+----+----+----+----+ :\n"
-": | capacity | 5 | : : :\n"
-": +-----------+-------+ : : :\n"
-": : `- - - - - - - - - - - - - - - -'\n"
-"`- - - - - - - - - - - - - -'\n"
+" Stak Bunke\n"
+".- - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - - -.\n"
+": : : :\n"
+": list : : :\n"
+": +------+----+----+ : : +------+----+----+ +------+----+----+ :\n"
+": | Cons | 1 | o--+----+-----+--->| Cons | 2 | o--+--->| Nil | // | // | :\n"
+": +------+----+----+ : : +------+----+----+ +------+----+----+ :\n"
+": : : :\n"
+": : : :\n"
+"'- - - - - - - - - - - - -' '- - - - - - - - - - - - - - - - - - - - - - - -'\n"
"```"
#: src/std/box-recursive.md:33
@@ -6800,7 +6808,6 @@ msgid ""
msgstr ""
#: src/std/box-niche.md:19
-#, fuzzy
msgid ""
"```bob\n"
" Stack Heap\n"
@@ -6822,17 +6829,16 @@ msgid ""
"```"
msgstr ""
"```bob\n"
-" Stak Bunke\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - -.\n"
-": : : :\n"
-": s1 : : :\n"
-": +-----------+-------+ : : +----+----+----+----+----+ :\n"
-": | ptr | o---+---+-----+-->| H | a | l | l | o | :\n"
-": | len | 5 | : : +----+----+----+----+----+ :\n"
-": | capacity | 5 | : : :\n"
-": +-----------+-------+ : : :\n"
-": : `- - - - - - - - - - - - - - - -'\n"
-"`- - - - - - - - - - - - - -'\n"
+" Stak Bunke\n"
+".- - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - -.\n"
+": : : :\n"
+": list : : :\n"
+": +----+----+ : : +----+----+ +----+------+ :\n"
+": | 1 | o--+-----------+-----+--->| 2 | o--+--->| // | null | :\n"
+": +----+----+ : : +----+----+ +----+------+ :\n"
+": : : :\n"
+": : : :\n"
+"`- - - - - - - - - - - - -' '- - - - - - - - - - - - - - - - - - - - - - -'\n"
"```"
#: src/std/rc.md:1
@@ -7596,7 +7602,6 @@ msgid "Memory layout after allocating `pets`:"
msgstr ""
#: src/traits/trait-objects.md:42
-#, fuzzy
msgid ""
"```bob\n"
" Stack Heap\n"
@@ -7649,16 +7654,30 @@ msgid ""
msgstr ""
"```bob\n"
" Stak Bunke\n"
-".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - -.\n"
-": : : :\n"
-": s1 : : :\n"
-": +-----------+-------+ : : +----+----+----+----+----+ :\n"
-": | ptr | o---+---+-----+-->| H | a | l | l | o | :\n"
-": | len | 5 | : : +----+----+----+----+----+ :\n"
-": | capacity | 5 | : : :\n"
-": +-----------+-------+ : : :\n"
-": : `- - - - - - - - - - - - - - - -'\n"
-"`- - - - - - - - - - - - - -'\n"
+".- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - -.\n"
+": : : :\n"
+": pets : : :\n"
+": +-----------+-------+ : : +-----+-----+ :\n"
+": | ptr | o---+---+-----+-->| o o | o o | :\n"
+": | len | 2 | : : +-|-|-+-|-|-+ :\n"
+": | capacity | 2 | : : | | | | +---------------+ :\n"
+": +-----------+-------+ : : | | | '-->| name: \"Fido\" | :\n"
+": : : | | | +---------------+ :\n"
+"`- - - - - - - - - - - - - -' : | | | :\n"
+" : | | | +----------------------+ :\n"
+" : | | '---->| \"::name\" | :\n"
+" : | | +----------------------+ :\n"
+" : | | :\n"
+" : | | +-+ :\n"
+" : | '-->|\\| :\n"
+" : | +-+ :\n"
+" : | :\n"
+" : | +----------------------+ :\n"
+" : '---->| \"::name\" | :\n"
+" : +----------------------+ :\n"
+" : :\n"
+" '- - - - - - - - - - - - - - - - - - - - - - -'\n"
+"\n"
"```"
#: src/traits/trait-objects.md:72
@@ -8340,7 +8359,7 @@ msgstr ""
#: src/exercises/day-3/morning.md:1
msgid "# Day 3: Morning Exercises"
-msgstr ""
+msgstr "# Dag 3: Morgenøvelser"
#: src/exercises/day-3/morning.md:3
msgid "We will design a classical GUI library traits and trait objects."
@@ -10952,9 +10971,8 @@ msgid ""
msgstr ""
#: src/bare-metal.md:1
-#, fuzzy
msgid "# Welcome to Bare Metal Rust"
-msgstr "# Velkommen til Comprehensive Rust 🦀"
+msgstr "# Velkommen til Rust på det rå jern"
#: src/bare-metal.md:3
msgid ""
@@ -11007,6 +11025,13 @@ msgid ""
"cargo install cargo-binutils cargo-embed\n"
"```"
msgstr ""
+"```bash\n"
+"sudo apt install gcc-aarch64-linux-gnu gdb-multiarch libudev-dev picocom pkg-config qemu-system-arm\n"
+"rustup update\n"
+"rustup target add aarch64-unknown-none thumbv7em-none-eabihf\n"
+"rustup component add llvm-tools-preview\n"
+"cargo install cargo-binutils cargo-embed\n"
+"```"
#: src/bare-metal.md:30
msgid ""
@@ -11022,10 +11047,15 @@ msgid ""
"sudo udevadm control --reload-rules\n"
"```"
msgstr ""
+"```bash\n"
+"echo 'SUBSYSTEM==\"usb\", ATTR{idVendor}==\"0d28\", MODE=\"0664\", GROUP=\"plugdev\"' |\\\n"
+" sudo tee /etc/udev/rules.d/50-microbit.rules\n"
+"sudo udevadm control --reload-rules\n"
+"```"
#: src/bare-metal.md:38
msgid "On MacOS:"
-msgstr ""
+msgstr "På MacOS:"
#: src/bare-metal.md:40
msgid ""
@@ -11039,10 +11069,19 @@ msgid ""
"cargo install cargo-binutils cargo-embed\n"
"```"
msgstr ""
+"```bash\n"
+"xcode-select --install\n"
+"brew install gdb picocom qemu\n"
+"brew install --cask gcc-aarch64-embedded\n"
+"rustup update\n"
+"rustup target add aarch64-unknown-none thumbv7em-none-eabihf\n"
+"rustup component add llvm-tools-preview\n"
+"cargo install cargo-binutils cargo-embed\n"
+"```"
#: src/bare-metal/no_std.md:1
msgid "# `no_std`"
-msgstr ""
+msgstr "# `no_std`"
#: src/bare-metal/no_std.md:3
msgid ""
@@ -11050,24 +11089,29 @@ msgid ""
"\n"
""
msgstr ""
+"\n"
+"\n"
+""
#: src/bare-metal/no_std.md:7
msgid "`core`"
-msgstr ""
+msgstr "`core`"
#: src/bare-metal/no_std.md:9 src/bare-metal/no_std.md:14
msgid ""
" | \n"
""
msgstr ""
+" | \n"
+""
#: src/bare-metal/no_std.md:12
msgid "`alloc`"
-msgstr ""
+msgstr "`alloc`"
#: src/bare-metal/no_std.md:17
msgid "`std`"
-msgstr ""
+msgstr "`std`"
#: src/bare-metal/no_std.md:19
msgid ""
@@ -11126,6 +11170,11 @@ msgid ""
"\n"
""
msgstr ""
+"\n"
+" | \n"
+" \n"
+"\n"
+""
#: src/bare-metal/no_std.md:62
msgid ""
@@ -11817,9 +11866,8 @@ msgid ""
msgstr ""
#: src/exercises/bare-metal/compass.md:1
-#, fuzzy
msgid "# Compass"
-msgstr "Sammenligning"
+msgstr "# Kompas"
#: src/exercises/bare-metal/compass.md:3
msgid ""
@@ -11867,7 +11915,7 @@ msgstr ""
#: src/exercises/bare-metal/compass.md:26 src/exercises/bare-metal/rtc.md:19
#: src/exercises/concurrency/elevator.md:17
msgid "`src/main.rs`:"
-msgstr ""
+msgstr "`src/main.rs`:"
#: src/exercises/bare-metal/compass.md:28 src/exercises/bare-metal/rtc.md:21
#: src/exercises/concurrency/dining-philosophers.md:17
@@ -11875,7 +11923,7 @@ msgstr ""
#: src/exercises/concurrency/dining-philosophers-async.md:11
#: src/exercises/concurrency/elevator.md:19
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/compass.md:30
msgid ""
@@ -11925,7 +11973,7 @@ msgstr ""
#: src/exercises/concurrency/dining-philosophers-async.md:60
#: src/exercises/concurrency/elevator.md:367
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/compass.md:68
msgid ""
@@ -11953,7 +12001,7 @@ msgstr ""
#: src/exercises/bare-metal/compass.md:87
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/compass.md:89
msgid ""
@@ -11975,7 +12023,7 @@ msgstr ""
#: src/exercises/bare-metal/compass.md:102 src/exercises/bare-metal/rtc.md:987
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/compass.md:104
msgid ""
@@ -13229,7 +13277,7 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:151
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:153
msgid ""
@@ -13298,7 +13346,7 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:212
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:214
msgid ""
@@ -13509,10 +13557,9 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:412
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:414
-#, fuzzy
msgid ""
"```rust,compile_fail\n"
"// Copyright 2023 Google LLC\n"
@@ -13546,8 +13593,8 @@ msgid ""
"}\n"
"```"
msgstr ""
-"```rust\n"
-"// Copyright 2022 Google LLC\n"
+"```rust,compile_fail\n"
+"// Copyright 2023 Google LLC\n"
"//\n"
"// Licensed under the Apache License, Version 2.0 (the \"License\");\n"
"// you may not use this file except in compliance with the License.\n"
@@ -13559,7 +13606,24 @@ msgstr ""
"// distributed under the License is distributed on an \"AS IS\" BASIS,\n"
"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
"// See the License for the specific language governing permissions and\n"
-"// limitations under the License."
+"// limitations under the License.\n"
+"\n"
+"use cc::Build;\n"
+"use std::env;\n"
+"\n"
+"fn main() {\n"
+" #[cfg(target_os = \"linux\")]\n"
+" env::set_var(\"CROSS_COMPILE\", \"aarch64-linux-gnu\");\n"
+" #[cfg(not(target_os = \"linux\"))]\n"
+" env::set_var(\"CROSS_COMPILE\", \"aarch64-none-elf\");\n"
+"\n"
+" Build::new()\n"
+" .file(\"entry.S\")\n"
+" .file(\"exceptions.S\")\n"
+" .file(\"idmap.S\")\n"
+" .compile(\"empty\")\n"
+"}\n"
+"```"
#: src/exercises/bare-metal/rtc.md:446
msgid "`entry.S` (you shouldn't need to change this):"
@@ -13567,7 +13631,7 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:448
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:450
msgid ""
@@ -13737,7 +13801,7 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:597
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:599
msgid ""
@@ -13939,7 +14003,7 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:782
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:784
msgid ""
@@ -13996,7 +14060,7 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:831
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:833
msgid ""
@@ -14115,10 +14179,9 @@ msgstr ""
#: src/exercises/bare-metal/rtc.md:942
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/bare-metal/rtc.md:944
-#, fuzzy
msgid ""
"```makefile\n"
"# Copyright 2023 Google LLC\n"
@@ -14162,20 +14225,46 @@ msgid ""
"\trm -f *.bin\n"
"```"
msgstr ""
-"```rust\n"
-"// Copyright 2022 Google LLC\n"
-"//\n"
-"// Licensed under the Apache License, Version 2.0 (the \"License\");\n"
-"// you may not use this file except in compliance with the License.\n"
-"// You may obtain a copy of the License at\n"
-"//\n"
-"// http://www.apache.org/licenses/LICENSE-2.0\n"
-"//\n"
-"// Unless required by applicable law or agreed to in writing, software\n"
-"// distributed under the License is distributed on an \"AS IS\" BASIS,\n"
-"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
-"// See the License for the specific language governing permissions and\n"
-"// limitations under the License."
+"```makefile\n"
+"# Copyright 2023 Google LLC\n"
+"#\n"
+"# Licensed under the Apache License, Version 2.0 (the \"License\");\n"
+"# you may not use this file except in compliance with the License.\n"
+"# You may obtain a copy of the License at\n"
+"#\n"
+"# http://www.apache.org/licenses/LICENSE-2.0\n"
+"#\n"
+"# Unless required by applicable law or agreed to in writing, software\n"
+"# distributed under the License is distributed on an \"AS IS\" BASIS,\n"
+"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
+"# See the License for the specific language governing permissions and\n"
+"# limitations under the License.\n"
+"\n"
+"UNAME := $(shell uname -s)\n"
+"ifeq ($(UNAME),Linux)\n"
+"\tTARGET = aarch64-linux-gnu\n"
+"else\n"
+"\tTARGET = aarch64-none-elf\n"
+"endif\n"
+"OBJCOPY = $(TARGET)-objcopy\n"
+"\n"
+".PHONY: build qemu_minimal qemu qemu_logger\n"
+"\n"
+"all: rtc.bin\n"
+"\n"
+"build:\n"
+"\tcargo build\n"
+"\n"
+"rtc.bin: build\n"
+"\t$(OBJCOPY) -O binary target/aarch64-unknown-none/debug/rtc $@\n"
+"\n"
+"qemu: rtc.bin\n"
+"\tqemu-system-aarch64 -machine virt,gic-version=3 -cpu max -serial mon:stdio -display none -kernel $< -s\n"
+"\n"
+"clean:\n"
+"\tcargo clean\n"
+"\trm -f *.bin\n"
+"```"
#: src/exercises/bare-metal/rtc.md:989
msgid ""
@@ -14320,7 +14409,7 @@ msgstr ""
#: src/concurrency/channels.md:1
msgid "# Channels"
-msgstr ""
+msgstr "# Kanaler"
#: src/concurrency/channels.md:3
msgid ""
@@ -14363,7 +14452,7 @@ msgstr ""
#: src/concurrency/channels/unbounded.md:1
msgid "# Unbounded Channels"
-msgstr ""
+msgstr "# Ubegrænsede kanaler"
#: src/concurrency/channels/unbounded.md:3
msgid "You get an unbounded and asynchronous channel with `mpsc::channel()`:"
@@ -14398,7 +14487,7 @@ msgstr ""
#: src/concurrency/channels/bounded.md:1
msgid "# Bounded Channels"
-msgstr ""
+msgstr "# Begrænsede kanaler"
#: src/concurrency/channels/bounded.md:3
msgid "Bounded and synchronous channels make `send` block the current thread:"
@@ -14433,7 +14522,7 @@ msgstr ""
#: src/concurrency/send-sync.md:1
msgid "# `Send` and `Sync`"
-msgstr ""
+msgstr "# `Send` og `Sync`"
#: src/concurrency/send-sync.md:3
msgid ""
@@ -14470,7 +14559,7 @@ msgstr ""
#: src/concurrency/send-sync/send.md:1
msgid "# `Send`"
-msgstr ""
+msgstr "# `Send`"
#: src/concurrency/send-sync/send.md:3
msgid ""
@@ -14496,7 +14585,7 @@ msgstr ""
#: src/concurrency/send-sync/sync.md:1
msgid "# `Sync`"
-msgstr ""
+msgstr "# `Sync`"
#: src/concurrency/send-sync/sync.md:3
msgid ""
@@ -14531,11 +14620,11 @@ msgstr ""
#: src/concurrency/send-sync/examples.md:1
msgid "# Examples"
-msgstr ""
+msgstr "# Eksempler"
#: src/concurrency/send-sync/examples.md:3
msgid "## `Send + Sync`"
-msgstr ""
+msgstr "## `Send + Sync`"
#: src/concurrency/send-sync/examples.md:5
msgid "Most types you come across are `Send + Sync`:"
@@ -14559,7 +14648,7 @@ msgstr ""
#: src/concurrency/send-sync/examples.md:17
msgid "## `Send + !Sync`"
-msgstr ""
+msgstr "## `Send + !Sync`"
#: src/concurrency/send-sync/examples.md:19
msgid ""
@@ -14577,7 +14666,7 @@ msgstr ""
#: src/concurrency/send-sync/examples.md:27
msgid "## `!Send + Sync`"
-msgstr ""
+msgstr "## `!Send + Sync`"
#: src/concurrency/send-sync/examples.md:29
msgid ""
@@ -14593,7 +14682,7 @@ msgstr ""
#: src/concurrency/send-sync/examples.md:34
msgid "## `!Send + !Sync`"
-msgstr ""
+msgstr "## `!Send + !Sync`"
#: src/concurrency/send-sync/examples.md:36
msgid "These types are not thread-safe and cannot be moved to other threads:"
@@ -14609,7 +14698,7 @@ msgstr ""
#: src/concurrency/shared_state.md:1
msgid "# Shared State"
-msgstr ""
+msgstr "# Delt tilstand"
#: src/concurrency/shared_state.md:3
msgid ""
@@ -14628,7 +14717,7 @@ msgstr ""
#: src/concurrency/shared_state/arc.md:1
msgid "# `Arc`"
-msgstr ""
+msgstr "# `Arc`"
#: src/concurrency/shared_state/arc.md:3
msgid "[`Arc`][1] allows shared read-only access via `Arc::clone`:"
@@ -14675,7 +14764,7 @@ msgstr ""
#: src/concurrency/shared_state/mutex.md:1
msgid "# `Mutex`"
-msgstr ""
+msgstr "# `Mutex`"
#: src/concurrency/shared_state/mutex.md:3
msgid ""
@@ -14906,7 +14995,7 @@ msgstr ""
#: src/exercises/concurrency/link-checker.md:1
msgid "# Multi-threaded Link Checker"
-msgstr ""
+msgstr "# Flertrådet linktjekker"
#: src/exercises/concurrency/link-checker.md:3
msgid ""
@@ -15058,7 +15147,7 @@ msgstr ""
#: src/exercises/concurrency/link-checker.md:106
msgid "## Tasks"
-msgstr ""
+msgstr "## Opgaver"
#: src/exercises/concurrency/link-checker.md:108
msgid ""
@@ -15106,9 +15195,8 @@ msgid ""
msgstr ""
#: src/async.md:17
-#, fuzzy
msgid "## Comparisons"
-msgstr "Sammenligning"
+msgstr "## Sammenligninger"
#: src/async.md:19
msgid ""
@@ -15126,7 +15214,7 @@ msgstr ""
#: src/async/async-await.md:1
msgid "# `async`/`await`"
-msgstr ""
+msgstr "# `async`/`await`"
#: src/async/async-await.md:3
msgid ""
@@ -15299,7 +15387,7 @@ msgstr ""
#: src/async/runtimes/tokio.md:1
msgid "# Tokio"
-msgstr ""
+msgstr "# Tokio"
#: src/async/runtimes/tokio.md:4
msgid "Tokio provides: "
@@ -15363,7 +15451,7 @@ msgstr ""
#: src/async/tasks.md:1
msgid "# Tasks"
-msgstr ""
+msgstr "# Tasks (opgaver)"
#: src/async/tasks.md:3
msgid ""
@@ -15525,7 +15613,7 @@ msgstr ""
#: src/async/control-flow/join.md:1
msgid "# Join"
-msgstr ""
+msgstr "# Join"
#: src/async/control-flow/join.md:3
msgid ""
@@ -15585,7 +15673,7 @@ msgstr ""
#: src/async/control-flow/select.md:1
msgid "# Select"
-msgstr ""
+msgstr "# Select"
#: src/async/control-flow/select.md:3
msgid ""
@@ -15680,7 +15768,7 @@ msgstr ""
#: src/async/pitfalls.md:1
msgid "# Pitfalls of async/await"
-msgstr ""
+msgstr "# Faldgruber ved async/await"
#: src/async/pitfalls.md:3
msgid ""
@@ -15766,7 +15854,7 @@ msgstr ""
#: src/async/pitfalls/pin.md:1
msgid "# Pin"
-msgstr ""
+msgstr "# Pin"
#: src/async/pitfalls/pin.md:3
msgid ""
@@ -15965,7 +16053,7 @@ msgstr ""
#: src/async/pitfalls/async-traits.md:49
msgid " "
-msgstr ""
+msgstr " "
#: src/async/pitfalls/async-traits.md:51
msgid ""
@@ -16123,7 +16211,7 @@ msgstr ""
#: src/exercises/concurrency/elevator.md:12
msgid "## Getting Started"
-msgstr ""
+msgstr "## Kom godt igang"
#: src/exercises/concurrency/elevator.md:14
msgid ""
@@ -16168,7 +16256,7 @@ msgstr ""
#: src/exercises/concurrency/elevator.md:49
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/concurrency/elevator.md:51
msgid ""
@@ -16429,7 +16517,7 @@ msgstr ""
#: src/exercises/concurrency/elevator.md:290
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/concurrency/elevator.md:292
msgid ""
@@ -16479,7 +16567,7 @@ msgstr ""
#: src/exercises/concurrency/elevator.md:332
msgid ""
-msgstr ""
+msgstr ""
#: src/exercises/concurrency/elevator.md:334
msgid ""
@@ -16535,9 +16623,8 @@ msgid "Use `cargo run` to run the elevator simulation."
msgstr ""
#: src/exercises/concurrency/elevator.md:383
-#, fuzzy
msgid "## Exercises"
-msgstr "Øvelser"
+msgstr "## Øvelser"
#: src/exercises/concurrency/elevator.md:385
msgid ""
@@ -16593,7 +16680,7 @@ msgstr ""
#: src/thanks.md:1
msgid "# Thanks!"
-msgstr ""
+msgstr "# Tak!"
#: src/thanks.md:3
msgid ""
@@ -16601,6 +16688,8 @@ msgid ""
"that it\n"
"was useful."
msgstr ""
+"_Tak for at tage Comprehensive Rust 🦀!_ Vi håber du har nydt det og\n"
+"at det har været hjælpsomt."
#: src/thanks.md:6
msgid ""
@@ -16616,7 +16705,7 @@ msgstr ""
#: src/other-resources.md:1
msgid "# Other Rust Resources"
-msgstr ""
+msgstr "# Andre Rust-resourcer"
#: src/other-resources.md:3
msgid ""
@@ -16626,7 +16715,7 @@ msgstr ""
#: src/other-resources.md:6
msgid "## Official Documentation"
-msgstr ""
+msgstr "## Officiel dokumentation"
#: src/other-resources.md:8
msgid "The Rust project hosts many resources. These cover Rust in general:"
@@ -16748,7 +16837,7 @@ msgstr ""
#: src/credits.md:10
msgid "## Rust by Example"
-msgstr ""
+msgstr "## Rust by Example"
#: src/credits.md:12
msgid ""
@@ -16760,7 +16849,7 @@ msgstr ""
#: src/credits.md:17
msgid "## Rust on Exercism"
-msgstr ""
+msgstr "## Rust på Exercism"
#: src/credits.md:19
msgid ""
@@ -16773,7 +16862,7 @@ msgstr ""
#: src/credits.md:24
msgid "## CXX"
-msgstr ""
+msgstr "## CXX"
#: src/credits.md:26
msgid ""
@@ -16786,11 +16875,11 @@ msgstr ""
#: src/exercises/solutions.md:1
msgid "# Solutions"
-msgstr ""
+msgstr "# Løsninger"
#: src/exercises/solutions.md:3
msgid "You will find solutions to the exercises on the following pages."
-msgstr ""
+msgstr "Du til finde løsningerne til opgaverne på de næste sider."
#: src/exercises/solutions.md:5
msgid ""
@@ -16809,7 +16898,7 @@ msgstr ""
#: src/exercises/day-1/solutions-morning.md:1
msgid "# Day 1 Morning Exercises"
-msgstr ""
+msgstr "# Dag 1 morgenøvelser"
#: src/exercises/day-1/solutions-morning.md:3
msgid "## Arrays and `for` Loops"
@@ -16817,7 +16906,7 @@ msgstr ""
#: src/exercises/day-1/solutions-morning.md:5
msgid "([back to exercise](for-loops.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](for-loops.md))"
#: src/exercises/day-1/solutions-morning.md:7
msgid ""
@@ -16896,7 +16985,7 @@ msgstr ""
#: src/exercises/day-1/solutions-morning.md:78
msgid "### Bonus question"
-msgstr ""
+msgstr "### Bonusspørgsmål"
#: src/exercises/day-1/solutions-morning.md:80
msgid ""
@@ -16961,11 +17050,11 @@ msgstr ""
#: src/exercises/day-1/solutions-afternoon.md:3
msgid "## Designing a Library"
-msgstr ""
+msgstr "## Design af et bibliotek"
#: src/exercises/day-1/solutions-afternoon.md:5
msgid "([back to exercise](book-library.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](book-library.md))"
#: src/exercises/day-1/solutions-afternoon.md:7
msgid ""
@@ -17164,15 +17253,15 @@ msgstr ""
#: src/exercises/day-2/solutions-morning.md:1
msgid "# Day 2 Morning Exercises"
-msgstr ""
+msgstr "# Dag 2 morgenøvelser"
#: src/exercises/day-2/solutions-morning.md:3
msgid "## Points and Polygons"
-msgstr ""
+msgstr "## Punkter og polygoner"
#: src/exercises/day-2/solutions-morning.md:5
msgid "([back to exercise](points-polygons.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](points-polygons.md))"
#: src/exercises/day-2/solutions-morning.md:7
msgid ""
@@ -17412,11 +17501,11 @@ msgstr ""
#: src/exercises/day-2/solutions-afternoon.md:3
msgid "## Luhn Algorithm"
-msgstr ""
+msgstr "## Luhn-algorithmen"
#: src/exercises/day-2/solutions-afternoon.md:5
msgid "([back to exercise](luhn.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](luhn.md))"
#: src/exercises/day-2/solutions-afternoon.md:7
msgid ""
@@ -17511,14 +17600,103 @@ msgid ""
"// ANCHOR_END: unit-tests\n"
"```"
msgstr ""
+"```rust\n"
+"// Copyright 2022 Google LLC\n"
+"//\n"
+"// Licensed under the Apache License, Version 2.0 (the \"License\");\n"
+"// you may not use this file except in compliance with the License.\n"
+"// You may obtain a copy of the License at\n"
+"//\n"
+"// http://www.apache.org/licenses/LICENSE-2.0\n"
+"//\n"
+"// Unless required by applicable law or agreed to in writing, software\n"
+"// distributed under the License is distributed on an \"AS IS\" BASIS,\n"
+"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
+"// See the License for the specific language governing permissions and\n"
+"// limitations under the License.\n"
+"\n"
+"// ANCHOR: luhn\n"
+"pub fn luhn(cc_number: &str) -> bool {\n"
+" // ANCHOR_END: luhn\n"
+" let mut digits_seen = 0;\n"
+" let mut sum = 0;\n"
+" for (i, ch) in cc_number.chars().rev().filter(|&ch| ch != ' ').enumerate() {\n"
+" match ch.to_digit(10) {\n"
+" Some(d) => {\n"
+" sum += if i % 2 == 1 {\n"
+" let dd = d * 2;\n"
+" dd / 10 + dd % 10\n"
+" } else {\n"
+" d\n"
+" };\n"
+" digits_seen += 1;\n"
+" }\n"
+" None => return false,\n"
+" }\n"
+" }\n"
+"\n"
+" if digits_seen < 2 {\n"
+" return false;\n"
+" }\n"
+"\n"
+" sum % 10 == 0\n"
+"}\n"
+"\n"
+"fn main() {\n"
+" let cc_number = \"1234 5678 1234 5670\";\n"
+" println!(\n"
+" \"Is {cc_number} a valid credit card number? {}\",\n"
+" if luhn(cc_number) { \"yes\" } else { \"no\" }\n"
+" );\n"
+"}\n"
+"\n"
+"// ANCHOR: unit-tests\n"
+"#[test]\n"
+"fn test_non_digit_cc_number() {\n"
+" assert!(!luhn(\"foo\"));\n"
+"}\n"
+"\n"
+"#[test]\n"
+"fn test_empty_cc_number() {\n"
+" assert!(!luhn(\"\"));\n"
+" assert!(!luhn(\" \"));\n"
+" assert!(!luhn(\" \"));\n"
+" assert!(!luhn(\" \"));\n"
+"}\n"
+"\n"
+"#[test]\n"
+"fn test_single_digit_cc_number() {\n"
+" assert!(!luhn(\"0\"));\n"
+"}\n"
+"\n"
+"#[test]\n"
+"fn test_two_digit_cc_number() {\n"
+" assert!(luhn(\" 0 0 \"));\n"
+"}\n"
+"\n"
+"#[test]\n"
+"fn test_valid_cc_number() {\n"
+" assert!(luhn(\"4263 9826 4026 9299\"));\n"
+" assert!(luhn(\"4539 3195 0343 6467\"));\n"
+" assert!(luhn(\"7992 7398 713\"));\n"
+"}\n"
+"\n"
+"#[test]\n"
+"fn test_invalid_cc_number() {\n"
+" assert!(!luhn(\"4223 9826 4026 9299\"));\n"
+" assert!(!luhn(\"4539 3195 0343 6476\"));\n"
+" assert!(!luhn(\"8273 1232 7352 0569\"));\n"
+"}\n"
+"// ANCHOR_END: unit-tests\n"
+"```"
#: src/exercises/day-2/solutions-afternoon.md:97
msgid "## Strings and Iterators"
-msgstr ""
+msgstr "## Strenge og iteratorer"
#: src/exercises/day-2/solutions-afternoon.md:99
msgid "([back to exercise](strings-iterators.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](strings-iterators.md))"
#: src/exercises/day-2/solutions-afternoon.md:101
msgid ""
@@ -17601,10 +17779,84 @@ msgid ""
"fn main() {}\n"
"```"
msgstr ""
+"```rust\n"
+"// Copyright 2022 Google LLC\n"
+"//\n"
+"// Licensed under the Apache License, Version 2.0 (the \"License\");\n"
+"// you may not use this file except in compliance with the License.\n"
+"// You may obtain a copy of the License at\n"
+"//\n"
+"// http://www.apache.org/licenses/LICENSE-2.0\n"
+"//\n"
+"// Unless required by applicable law or agreed to in writing, software\n"
+"// distributed under the License is distributed on an \"AS IS\" BASIS,\n"
+"// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n"
+"// See the License for the specific language governing permissions and\n"
+"// limitations under the License.\n"
+"\n"
+"// ANCHOR: prefix_matches\n"
+"pub fn prefix_matches(prefix: &str, request_path: &str) -> bool {\n"
+" // ANCHOR_END: prefix_matches\n"
+" let prefixes = prefix.split('/');\n"
+" let request_paths = request_path\n"
+" .split('/')\n"
+" .map(|p| Some(p))\n"
+" .chain(std::iter::once(None));\n"
+"\n"
+" for (prefix, request_path) in prefixes.zip(request_paths) {\n"
+" match request_path {\n"
+" Some(request_path) => {\n"
+" if (prefix != \"*\") && (prefix != request_path) {\n"
+" return false;\n"
+" }\n"
+" }\n"
+" None => return false,\n"
+" }\n"
+" }\n"
+" true\n"
+"}\n"
+"\n"
+"// ANCHOR: unit-tests\n"
+"#[test]\n"
+"fn test_matches_without_wildcard() {\n"
+" assert!(prefix_matches(\"/v1/publishers\", \"/v1/publishers\"));\n"
+" assert!(prefix_matches(\"/v1/publishers\", \"/v1/publishers/abc-123\"));\n"
+" assert!(prefix_matches(\"/v1/publishers\", \"/v1/publishers/abc/books\"));\n"
+"\n"
+" assert!(!prefix_matches(\"/v1/publishers\", \"/v1\"));\n"
+" assert!(!prefix_matches(\"/v1/publishers\", \"/v1/publishersBooks\"));\n"
+" assert!(!prefix_matches(\"/v1/publishers\", \"/v1/parent/publishers\"));\n"
+"}\n"
+"\n"
+"#[test]\n"
+"fn test_matches_with_wildcard() {\n"
+" assert!(prefix_matches(\n"
+" \"/v1/publishers/*/books\",\n"
+" \"/v1/publishers/foo/books\"\n"
+" ));\n"
+" assert!(prefix_matches(\n"
+" \"/v1/publishers/*/books\",\n"
+" \"/v1/publishers/bar/books\"\n"
+" ));\n"
+" assert!(prefix_matches(\n"
+" \"/v1/publishers/*/books\",\n"
+" \"/v1/publishers/foo/books/book1\"\n"
+" ));\n"
+"\n"
+" assert!(!prefix_matches(\"/v1/publishers/*/books\", \"/v1/publishers\"));\n"
+" assert!(!prefix_matches(\n"
+" \"/v1/publishers/*/books\",\n"
+" \"/v1/publishers/foo/booksByAuthor\"\n"
+" ));\n"
+"}\n"
+"// ANCHOR_END: unit-tests\n"
+"\n"
+"fn main() {}\n"
+"```"
#: src/exercises/day-3/solutions-morning.md:1
msgid "# Day 3 Morning Exercise"
-msgstr ""
+msgstr "# Dag 3 morgenøvelser"
#: src/exercises/day-3/solutions-morning.md:3
msgid "## A Simple GUI Library"
@@ -17612,7 +17864,7 @@ msgstr ""
#: src/exercises/day-3/solutions-morning.md:5
msgid "([back to exercise](simple-gui.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](simple-gui.md))"
#: src/exercises/day-3/solutions-morning.md:7
msgid ""
@@ -17796,7 +18048,7 @@ msgstr ""
#: src/exercises/day-3/solutions-afternoon.md:5
msgid "([back to exercise](safe-ffi-wrapper.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](safe-ffi-wrapper.md))"
#: src/exercises/day-3/solutions-afternoon.md:7
msgid ""
@@ -17975,16 +18227,15 @@ msgstr ""
#: src/exercises/bare-metal/solutions-morning.md:1
msgid "# Bare Metal Rust Morning Exercise"
-msgstr ""
+msgstr "# Rå jern morgenøvelser"
#: src/exercises/bare-metal/solutions-morning.md:3
-#, fuzzy
msgid "## Compass"
-msgstr "Sammenligning"
+msgstr "## Kompas"
#: src/exercises/bare-metal/solutions-morning.md:5
msgid "([back to exercise](compass.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](compass.md))"
#: src/exercises/bare-metal/solutions-morning.md:7
msgid ""
@@ -18163,11 +18414,11 @@ msgstr ""
#: src/exercises/bare-metal/solutions-afternoon.md:5
msgid "([back to exercise](rtc.md))"
-msgstr ""
+msgstr "([tilbage til øvelsen](rtc.md))"
#: src/exercises/bare-metal/solutions-afternoon.md:7
msgid "`main.rs`:"
-msgstr ""
+msgstr "`main.rs`:"
#: src/exercises/bare-metal/solutions-afternoon.md:9
msgid ""
@@ -18318,7 +18569,7 @@ msgstr ""
#: src/exercises/bare-metal/solutions-afternoon.md:149
msgid "`pl031.rs`:"
-msgstr ""
+msgstr "`pl031.rs`:"
#: src/exercises/bare-metal/solutions-afternoon.md:151
msgid ""
|