commit d34dae75b563186b2e470f34402c3226db658b47 Author: shadows-withal Date: Thu Sep 21 10:01:46 2023 +0000 Deploying to gh-pages from @ rust-lang/rustlings@155282240409d0d35ad2c374fd096acd5a455516 🚀 diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..5042fd5 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +rustlings.cool \ No newline at end of file diff --git a/artifacts.js b/artifacts.js new file mode 100644 index 0000000..2dbfc70 --- /dev/null +++ b/artifacts.js @@ -0,0 +1,245 @@ +/* Code modified from the blender website + * https://www.blender.org/wp-content/themes/bthree/assets/js/get_os.js?x82196 + */ + +let options = { + windows64: "x86_64-pc-windows", + windows32: "i686-pc-windows", + windowsArm: "aarch64-pc-windows", + + mac64: "x86_64-apple", + mac32: "i686-apple", + macSilicon: "aarch64-apple", + + linux64: "x86_64-unknown-linux", + linux32: "i686-unknown-linux", + linuxArm: "aarch64-unknown-linux", + + // ios: "ios", + // android: "linux-android", + // freebsd: "freebsd", +}; + +function isAppleSilicon() { + try { + var glcontext = document.createElement("canvas").getContext("webgl"); + var debugrenderer = glcontext + ? glcontext.getExtension("WEBGL_debug_renderer_info") + : null; + var renderername = + (debugrenderer && + glcontext.getParameter(debugrenderer.UNMASKED_RENDERER_WEBGL)) || + ""; + if (renderername.match(/Apple M/) || renderername.match(/Apple GPU/)) { + return true; + } + + return false; + } catch (e) {} +} + +function getOS() { + var OS = options.windows64.default; + var userAgent = navigator.userAgent; + var platform = navigator.platform; + + if (navigator.appVersion.includes("Win")) { + if ( + !userAgent.includes("Windows NT 5.0") && + !userAgent.includes("Windows NT 5.1") && + (userAgent.indexOf("Win64") > -1 || + platform == "Win64" || + userAgent.indexOf("x86_64") > -1 || + userAgent.indexOf("x86_64") > -1 || + userAgent.indexOf("amd64") > -1 || + userAgent.indexOf("AMD64") > -1 || + userAgent.indexOf("WOW64") > -1) + ) { + OS = options.windows64; + } else { + if ( + window.external && + window.external.getHostEnvironmentValue && + window.external + .getHostEnvironmentValue("os-architecture") + .includes("ARM64") + ) { + OS = options.windowsArm; + } else { + try { + var canvas = document.createElement("canvas"); + var gl = canvas.getContext("webgl"); + + var debugInfo = gl.getExtension("WEBGL_debug_renderer_info"); + var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); + if (renderer.includes("Qualcomm")) OS = options.windowsArm; + } catch (e) {} + } + } + } + + //MacOS, MacOS X, macOS + if (navigator.appVersion.includes("Mac")) { + if ( + navigator.userAgent.includes("OS X 10.5") || + navigator.userAgent.includes("OS X 10.6") + ) { + OS = options.mac32; + } else { + OS = options.mac64; + + const isSilicon = isAppleSilicon(); + if (isSilicon) { + OS = options.macSilicon; + } + } + } + + // linux + if (platform.includes("Linux")) { + OS = options.linux64; + // FIXME: Can we find out whether linux 32-bit or ARM are used? + } + + // if ( + // userAgent.includes("iPad") || + // userAgent.includes("iPhone") || + // userAgent.includes("iPod") + // ) { + // OS = options.ios; + // } + // if (platform.toLocaleLowerCase().includes("freebsd")) { + // OS = options.freebsd; + // } + + return OS; +} + +let os = getOS(); +window.os = os; + +// Unhide and hydrate selector with events +const archSelect = document.querySelector(".arch-select"); +if (archSelect) { + archSelect.classList.remove("hidden"); + const selector = document.querySelector("#install-arch-select"); + if (selector) { + selector.addEventListener("change", onArchChange); + } +} + +// Hydrate tab buttons with events +Array.from(document.querySelectorAll(".install-tab[data-id]")).forEach((tab) => { + tab.addEventListener("click", onTabClick); +}); + +function onArchChange(evt) { + // Get target + const target = evt.currentTarget.value; + // Find corresponding installer lists + const newContentEl = document.querySelector(`.arch[data-arch=${target}]`); + const oldContentEl = document.querySelector(`.arch[data-arch]:not(.hidden)`); + // Hide old content element (if applicable) + if (oldContentEl) { + oldContentEl.classList.add("hidden"); + } + // Show new content element + newContentEl.classList.remove("hidden"); + // Show the first tab's content if nothing was selected before + if (newContentEl.querySelectorAll(".install-tab.selected").length === 0) { + const firstContentChild = newContentEl.querySelector(".install-content:first-of-type"); + const firstTabChild = newContentEl.querySelector(".install-tab:first-of-type"); + firstContentChild.classList.remove("hidden"); + if (firstTabChild) { + firstTabChild.classList.add("selected"); + } + } + // Hide "no OS detected" message + const noDetectEl = document.querySelector(".no-autodetect"); + noDetectEl.classList.add("hidden"); + // Hide Mac hint + document.querySelector(".mac-switch").classList.add("hidden"); +} + +function onTabClick(evt) { + // Get target and ID + const {triple, id} = evt.currentTarget.dataset; + if (triple) { + // Find corresponding content elements + const newContentEl = document.querySelector(`.install-content[data-id="${String(id)}"][data-triple=${triple}]`); + const oldContentEl = document.querySelector(`.install-content[data-triple=${triple}][data-id]:not(.hidden)`); + // Find old tab to unselect + const oldTabEl = document.querySelector(`.install-tab[data-triple=${triple}].selected`); + // Hide old content element + if (oldContentEl && oldTabEl) { + oldContentEl.classList.add("hidden"); + oldTabEl.classList.remove("selected"); + } + + // Unhide new content element + newContentEl.classList.remove("hidden"); + // Select new tab element + evt.currentTarget.classList.add("selected"); + } +} + +const allPlatforms = Array.from(document.querySelectorAll(`.arch[data-arch]`)); +let hit = allPlatforms.find( + (a) => { + // Show Intel Mac downloads if no M1 Mac downloads are available + if ( + a.attributes["data-arch"].value.includes(options.mac64) && + os.includes(options.macSilicon) && + !allPlatforms.find(p => p.attributes["data-arch"].value.includes(options.macSilicon))) { + // Unhide hint + document.querySelector(".mac-switch").classList.remove("hidden"); + return true; + } + return a.attributes["data-arch"].value.includes(os); + } +); + +if (hit) { + hit.classList.remove("hidden"); + const selectEl = document.querySelector("#install-arch-select"); + selectEl.value = hit.dataset.arch; + const firstContentChild = hit.querySelector(".install-content:first-of-type"); + const firstTabChild = hit.querySelector(".install-tab:first-of-type"); + firstContentChild.classList.remove("hidden"); + if (firstTabChild) { + firstTabChild.classList.add("selected"); + } +} else { + const noDetectEl = document.querySelector(".no-autodetect"); + if (noDetectEl) { + const noDetectElDetails = document.querySelector(".no-autodetect-details"); + if (noDetectElDetails) { + noDetectElDetails.innerHTML = `We detected you're on ${os} but there don't seem to be installers for that. ` + } + noDetectEl.classList.remove("hidden"); + } +} + +let copyButtons = Array.from(document.querySelectorAll("[data-copy]")); +if (copyButtons.length) { + copyButtons.forEach(function (element) { + element.addEventListener("click", () => { + navigator.clipboard.writeText(element.attributes["data-copy"].value); + }); + }); +} + +// Toggle for pre releases +const checkbox = document.getElementById("show-prereleases"); + +if (checkbox) { + checkbox.addEventListener("click", () => { + const all = document.getElementsByClassName("pre-release"); + + if (all) { + for (var item of all) { + item.classList.toggle("hidden"); + } + } + }); +} \ No newline at end of file diff --git a/artifacts.json b/artifacts.json new file mode 100644 index 0000000..a414e14 --- /dev/null +++ b/artifacts.json @@ -0,0 +1 @@ +{"format_version":"0.3.1","tag":"5.6.1","formatted_date":"Sep 18 2023 at 08:18 UTC","platforms_with_downloads":[{"target":["aarch64-apple-darwin"],"display_name":"macOS Apple Silicon","installers":[0,1]},{"target":["x86_64-apple-darwin"],"display_name":"macOS Intel","installers":[0,1]},{"target":["x86_64-pc-windows-msvc"],"display_name":"Windows x64","installers":[0,1]},{"target":["x86_64-unknown-linux-gnu"],"display_name":"Linux x64","installers":[0,1]}],"downloadable_files":[],"release":{"artifacts":{"files":[],"installers":[{"label":"macos/linux/unix","description":"","method":{"type":"Run","file":null,"run_hint":"curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash"}},{"label":"windows","description":"","method":{"type":"Run","file":null,"run_hint":"Start-BitsTransfer -Source https://raw.githubusercontent.com/rust-lang/rustlings/main/install.ps1 -Destination $env:TMP/install_rustlings.ps1; Unblock-File $env:TMP/install_rustlings.ps1; Invoke-Expression $env:TMP/install_rustlings.ps1"}}],"targets":{"aarch64-apple-darwin":[0,1],"aarch64-pc-windows-msvc":[0,1],"aarch64-unknown-linux-gnu":[0,1],"aarch64-unknown-linux-musl":[0,1],"i686-apple-darwin":[0,1],"i686-pc-windows-msvc":[0,1],"i686-unknown-linux-gnu":[0,1],"i686-unknown-linux-musl":[0,1],"x86_64-apple-darwin":[0,1],"x86_64-pc-windows-msvc":[0,1],"x86_64-unknown-linux-gnu":[0,1],"x86_64-unknown-linux-musl":[0,1]}}},"os_script":"/artifacts.js","has_checksum_files":false} \ No newline at end of file diff --git a/artifacts/index.html b/artifacts/index.html new file mode 100644 index 0000000..a913239 --- /dev/null +++ b/artifacts/index.html @@ -0,0 +1,140 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+
+ + + +
+

macos/linux/unix

+
+
+curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash
+ + + + +
+
+ + + + +
+

windows

+
+
+Start-BitsTransfer -Source https://raw.githubusercontent.com/rust-lang/rustlings/main/install.ps1 -Destination $env:TMP/install_rustlings.ps1; Unblock-File $env:TMP/install_rustlings.ps1; Invoke-Expression $env:TMP/install_rustlings.ps1
+ + + + +
+
+ + +
+
+

Downloads

+ + + + + + + + + +
FilePlatform
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/changelog/1.4.1/index.html b/changelog/1.4.1/index.html new file mode 100644 index 0000000..2f72890 --- /dev/null +++ b/changelog/1.4.1/index.html @@ -0,0 +1,113 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

1.4.1

+
+ + +
+ +
+ + + + + 1.4.1 + + + + + Aug 13 2019 at 10:00 UTC + + +
+
+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/1.5.0/index.html b/changelog/1.5.0/index.html new file mode 100644 index 0000000..a6dc051 --- /dev/null +++ b/changelog/1.5.0/index.html @@ -0,0 +1,150 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

1.5.0

+
+ + +
+ +
+ + + + + 1.5.0 + + + + + Nov 9 2019 at 09:53 UTC + + +
+
+

Bug Fixes

+
    +
  • test1: Rewrite logic (79a56942)
  • +
  • installation: Fix rustlings installation check (7a252c47)
  • +
  • iterators: Rename iterator3.rs (433d2115)
  • +
  • iterators2: Remove syntax resulting in misleading error message (4cde8664)
  • +
  • option1: +
      +
    • Fix arguments passed to assert! macro (#222) (4c2cf6da)
    • +
    • Fix arguments passed to assert! macro (ead4f7af)
    • +
    • Add test for prematurely passing exercise (a750e4a1)
    • +
    +
  • +
  • primitive_types4: Fail on a slice covering the wrong area (5b1e673c)
  • +
  • readme: http to https (70946b85)
  • +
  • test1: +
      +
    • Swap assertion parameter order (4086d463)
    • +
    • renamed function name to snake case closes #180 (89d5186c)
    • +
    +
  • +
+

Features

+
    +
  • Add enums exercises (dc150321)
  • +
  • Added exercise for struct update syntax (1c4c8764)
  • +
  • iterators2: adds iterators2 exercise including config (9288fccf)
  • +
+

+

1.4.1 (2019-08-13)

+

Bug Fixes

+
    +
  • iterators2: Remove syntax resulting in misleading error message (4cde8664)
  • +
  • option1: Add test for prematurely passing exercise (a750e4a1)
  • +
  • test1: Swap assertion parameter order (4086d463)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/1.5.1/index.html b/changelog/1.5.1/index.html new file mode 100644 index 0000000..d13f32b --- /dev/null +++ b/changelog/1.5.1/index.html @@ -0,0 +1,113 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

1.5.1

+
+ + +
+ +
+ + + + + 1.5.1 + + + + + Nov 11 2019 at 13:03 UTC + + +
+
+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/2.0.0/index.html b/changelog/2.0.0/index.html new file mode 100644 index 0000000..0361545 --- /dev/null +++ b/changelog/2.0.0/index.html @@ -0,0 +1,143 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

2.0.0

+
+ + +
+ +
+ + + + + 2.0.0 + + + + + Nov 12 2019 at 11:26 UTC + + +
+
+

Bug Fixes

+
    +
  • default: Clarify the installation procedure (c371b853)
  • +
  • info: Fix trailing newlines for hints (795b6e34)
  • +
  • run: make run never prompt (4b265465)
  • +
+

Breaking Changes

+ +

Features

+
    +
  • cli: check for rustc before doing anything (36a033b8)
  • +
  • hint: Add test for hint (ce9fa6eb)
  • +
+

+

1.5.1 (2019-11-11)

+

Bug Fixes

+
    +
  • errors3: Update hint (dcfb427b, closes #185)
  • +
  • if1: Remove return reference (ad03d180)
  • +
  • strings: Move Strings before Structs (6dcecb38, closes #204)
  • +
  • structs1: Remove misleading comment (f72e5a8f)
  • +
  • threads: Move Threads behind SLT (fbe91a67, closes #205)
  • +
  • watch: clear screen before each verify() (3aff590)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/2.1.0/index.html b/changelog/2.1.0/index.html new file mode 100644 index 0000000..98b912c --- /dev/null +++ b/changelog/2.1.0/index.html @@ -0,0 +1,132 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

2.1.0

+
+ + +
+ +
+ + + + + 2.1.0 + + + + + Nov 27 2019 at 09:47 UTC + + +
+
+

Bug Fixes

+
    +
  • add line numbers in several exercises and hints (b565c4d3)
  • +
  • arc1: Fix some words in the comment (c42c3b21)
  • +
  • enums: Add link to chapter on pattern syntax (#242) (615ce327)
  • +
  • primitive_types4: + +
  • +
  • strings2: update line number in hint (a09f684f)
  • +
  • variables1: Correct wrong word in comment (fda5a470)
  • +
+

Features

+
    +
  • watch: show hint while watching (8143d57b)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/2.2.0/index.html b/changelog/2.2.0/index.html new file mode 100644 index 0000000..ca76f7a --- /dev/null +++ b/changelog/2.2.0/index.html @@ -0,0 +1,148 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 2.2.0

+
+ + +
+ +
+ + + + + 2.2.0 + + + + + Feb 25 2020 at 22:09 UTC + + +
+
+

Bug Fixes

+
    +
  • Update deps to version compatable with aarch64-pc-windows (#263) (19a93428)
  • +
  • docs: +
      +
    • Added a necessary step to Windows installation process (#242) (3906efcd)
    • +
    • Fixed mangled sentence from book; edited for clarity (#266) (ade52ff)
    • +
    • Updated iterators readme to account for iterators4 exercise (#273) (bec8e3a)
    • +
    +
  • +
  • installation: make fatal errors more obvious (#272) (17d0951e)
  • +
  • iterators2: +
      +
    • Remove reference to missing iterators2.rs (#245) (419f7797)
    • +
    +
  • +
  • as_ref_mut: Enable a test and improve per clippy's suggestion (#256) (dfdf809)
  • +
  • tests1: +
      +
    • Change test command (fe10e06c
    • +
    • Correct test command in tests1.rs comment (#263) (39fa7ae)
    • +
    +
  • +
+

Features

+
    +
  • Add variables5.rs exercise (#264) (0c73609e)
  • +
  • Show a completion message when watching (#253) (d25ee55a)
  • +
  • Add type conversion and parsing exercises (#249) (0c85dc11)
  • +
  • Created consistent money unit (#258) (fd57f8f)
  • +
  • Enable test for exercise test4 (#276) (8b971ff)
  • +
  • Added traits exercises (#274 but specifically #216, which originally added +this :heart:) (b559cdd)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/2.2.1/index.html b/changelog/2.2.1/index.html new file mode 100644 index 0000000..5f560b1 --- /dev/null +++ b/changelog/2.2.1/index.html @@ -0,0 +1,113 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 2.2.1

+
+ + +
+ +
+ + + + + 2.2.1 + + + + + Feb 27 2020 at 18:24 UTC + + +
+
+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/3.0.0/index.html b/changelog/3.0.0/index.html new file mode 100644 index 0000000..9eea6d0 --- /dev/null +++ b/changelog/3.0.0/index.html @@ -0,0 +1,147 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 3.0.0

+
+ + +
+ +
+ + + + + 3.0.0 + + + + + Apr 11 2020 at 22:04 UTC + + +
+
+

Breaking Changes

+
    +
  • make "compile" exercises print output (#278) (3b6d5c)
  • +
+

Bug Fixes

+
    +
  • primitive_types: revert primitive_types4 (#296) (b3a3351e)
  • +
  • run: compile clippy exercise files (#295) (3ab084a4)
  • +
  • conversions: +
      +
    • add additional test to meet exercise rules (#284) (bc22ec3)
    • +
    • remove duplicate not done comment (#292) (dab90f)
    • +
    +
  • +
  • don't hardcode documentation version for traits (#288) (30e6af)
  • +
+

Features

+
    +
  • add Option2 exercise (#290) (86b5c08b)
  • +
  • add exercise for option (#282) (135e5d47)
  • +
  • add new exercises for generics (#280) (76be5e4e)
  • +
  • ci: add buildkite config (b049fa2c)
  • +
+

+

2.2.1 (2020-02-27)

+

Bug Fixes

+
    +
  • Re-add cloning the repo to install scripts (3d9b03c5)
  • +
+

Features

+ +

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.0.0/index.html b/changelog/4.0.0/index.html new file mode 100644 index 0000000..c8002b9 --- /dev/null +++ b/changelog/4.0.0/index.html @@ -0,0 +1,159 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.0.0

+
+ + +
+ +
+ + + + + 4.0.0 + + + + + Jul 8 2020 at 09:41 UTC + + +
+
+

Breaking Changes

+
    +
  • Add a --nocapture option to display test harnesses' outputs (8ad5f9bf)
  • +
  • Rename test to quiz, fixes #244 (010a0456)
  • +
+

Features

+ +

Bug Fixes

+
    +
  • Change then to than (ddd98ad7)
  • +
  • rename quiz1 to tests1 in info (#420) (0dd1c6ca)
  • +
  • fix quiz naming inconsistency (#421) (5563adbb)
  • +
  • confine the user further in variable exercises (06ef4cc6)
  • +
  • update iterator and macro text for typos and clarity (95900828)
  • +
  • update generics2 closes #362 (964c974a)
  • +
  • confusing comment in conversions/try_from_into.rs (c9e4f2cf)
  • +
  • arc1: Passively introduce attributes (#429) (113cdae2)
  • +
  • box1: fix comment typo (#426) (bb2ca251)
  • +
  • errorsn: Try harder to confine the user. (#388) (2b20c8a0)
  • +
  • from_into.rs: typo (a901499e)
  • +
  • generics2: Guide students to the answer (#430) (e6bd8021)
  • +
  • installation: +
      +
    • Provide a backup git reference when tag can't be curl (9e4fb100)
    • +
    • Check if python is available while checking for git,rustc and cargo (9cfb617d)
    • +
    +
  • +
  • option1: +
      +
    • Don't add only zeros to the numbers array (cce6a442)
    • +
    • Add cast to usize, as it is confusing in the context of an exercise about Option (f6cffc7e)
    • +
    +
  • +
  • option2: Add TODO to comments (#400) (10967bce)
  • +
  • options1: Add hint about Array Initialization (#389) (9f75554f)
  • +
  • test2: name of type String and &str (#394) (d6c0a688)
  • +
  • variables6: minor typo (#419) (524e17df)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.1.0/index.html b/changelog/4.1.0/index.html new file mode 100644 index 0000000..6a4283c --- /dev/null +++ b/changelog/4.1.0/index.html @@ -0,0 +1,134 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.1.0

+
+ + +
+ +
+ + + + + 4.1.0 + + + + + Oct 5 2020 at 16:45 UTC + + +
+
+

Bug Fixes

+
    +
  • Update rustlings version in Cargo.lock (1cc40bc9)
  • +
  • arc1: index mod should equal thread count (b4062ef6)
  • +
  • enums3: Update Message::ChangeColor to take a tuple. (#457) (4b6540c7)
  • +
  • exercises: adding question mark to quiz2 (101072ab)
  • +
  • generics3: clarify grade change (47f7672c)
  • +
  • structs3: Small adjustment of variable name (114b54cb)
  • +
  • using_as: Add test so that proper type is returned. (#512) (3286c5ec)
  • +
+

Features

+
    +
  • Added iterators1.rs exercise (9642f5a3)
  • +
  • Add ability to run rustlings on repl.it (#471) (8f7b5bd0)
  • +
  • Add gitpod support (#473) (4821a8be)
  • +
  • Remind the user of the hint option (#425) (816b1f5e)
  • +
  • Remind the user of the hint option (#425) (9f61db5d)
  • +
  • cli: Added 'cls' command to 'watch' mode (#474) (4f2468e1)
  • +
  • try_from_into: Add insufficient length test (#469) (523d18b8)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.2.0/index.html b/changelog/4.2.0/index.html new file mode 100644 index 0000000..a222de3 --- /dev/null +++ b/changelog/4.2.0/index.html @@ -0,0 +1,135 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.2.0

+
+ + +
+ +
+ + + + + 4.2.0 + + + + + Nov 7 2020 at 13:22 UTC + + +
+
+

Features

+ +

Bug Fixes

+
    +
  • log error output when inotify limit is exceeded (d61b4e5a)
  • +
  • more unique temp_file (5643ef05)
  • +
  • installation: Update the MinRustVersion (21bfb2d4)
  • +
  • iterators2: Update description (#578) (197d3a3d)
  • +
  • primitive_types6: +
      +
    • remove 'unused doc comment' warning (472d8592)
    • +
    • missing comma in test (4fb230da)
    • +
    +
  • +
  • quiz3: Second test is for odd numbers, not even. (#553) (18e0bfef)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.3.0/index.html b/changelog/4.3.0/index.html new file mode 100644 index 0000000..c2bf9df --- /dev/null +++ b/changelog/4.3.0/index.html @@ -0,0 +1,137 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.3.0

+
+ + +
+ +
+ + + + + 4.3.0 + + + + + Dec 29 2020 at 10:41 UTC + + +
+
+

Features

+
    +
  • Rewrite default out text (44d39112)
  • +
  • match exercise order to book chapters (#541) (033bf119)
  • +
  • Crab? (#586) (fa9f522b)
  • +
  • add "rustlings list" command (838f9f30)
  • +
  • try_from_into: remove duplicate annotation (04f1d079)
  • +
+

Bug Fixes

+
    +
  • update structs README (bcf14cf6)
  • +
  • added missing exercises to info.toml (90cfb6ff)
  • +
  • gives a bit more context to magic number (30644c9a)
  • +
  • functions2: Change signature to trigger precise error message: (#605) (0ef95947)
  • +
  • structs1: Adjust wording (#573) (9334783d)
  • +
  • try_from_into: + +
  • +
  • vec1: Have test compare every element in a and v (9b6c6293)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.4.0/index.html b/changelog/4.4.0/index.html new file mode 100644 index 0000000..f25b587 --- /dev/null +++ b/changelog/4.4.0/index.html @@ -0,0 +1,165 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.4.0

+
+ + +
+ +
+ + + + + 4.4.0 + + + + + Apr 24 2021 at 10:04 UTC + + +
+
+

Bug Fixes

+
    +
  • Fix spelling error in main.rs (91ee27f2)
  • +
  • typo in default out text (644c49f1)
  • +
  • collections: Naming exercises for vectors and hashmap (bef39b12)
  • +
  • from_str: +
      +
    • Correct typos (5f7c89f8)
    • +
    • test for error instead of unwrap/should_panic (15e71535)
    • +
    • use trait objects for from_str (c3e7b831)
    • +
    +
  • +
  • functions3: improve function argument type (#687) (a6509cc4)
  • +
  • hashmap2: Update incorrect assertion (#660) (72aaa15e)
  • +
  • info: Fix typo (#635) (cddc1e86)
  • +
  • iterators2: Moved errors out of tests. (baf4ba17, closes #359)
  • +
  • iterators3: Enabled iterators3.rs to run without commented out tests. (c6712dfc)
  • +
  • main: Let find_exercise work with borrows (347f30bd)
  • +
  • move_semantics4: +
      +
    • Remove redundant "instead" (#640) (cc266d7d)
    • +
    • Small readbility improvement (#617) (10965920)
    • +
    +
  • +
  • option2: Rename uninformative variables (#675) (b4de6594)
  • +
  • quiz3: Force an answer to Q2 (#672) (0d894e6f)
  • +
  • structs: Add 5.3 to structs/README (#652) (6bd791f2)
  • +
  • structs2: correct grammar in hint (#663) (ebdb66c7)
  • +
  • structs3: +
      +
    • reword heading comment (#664) (9f3e8c2d)
    • +
    • add check to prevent naive implementation of is_international (05a753fe)
    • +
    +
  • +
  • threads1: line number correction (7857b0a6)
  • +
  • try_from_into: use trait objects (2e93a588)
  • +
+

Features

+
    +
  • Replace clap with argh (7928122f)
  • +
  • Replace emojis when NO_EMOJI env variable present (8d62a996)
  • +
  • Added iterators5.rs exercise. (b29ea17e)
  • +
  • arc1: Add more details to description and hint (#710) (81be4044)
  • +
  • cli: Improve the list command with options, and then some (8bbe4ff1)
  • +
  • list: + +
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.5.0/index.html b/changelog/4.5.0/index.html new file mode 100644 index 0000000..05dd7a1 --- /dev/null +++ b/changelog/4.5.0/index.html @@ -0,0 +1,132 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.5.0

+
+ + +
+ +
+ + + + + 4.5.0 + + + + + Jul 7 2021 at 20:30 UTC + + +
+
+

Features

+
    +
  • Add move_semantics5 exercise. (#746) (399ab328)
  • +
  • cli: Add "next" to run the next unsolved exercise. (#785) (d20e413a)
  • +
+

Bug Fixes

+
    +
  • rename result1 to errors4 (50ab289d)
  • +
  • move_semantics5 hints (1b858285)
  • +
  • remove trailing whitespaces from iterators1 (4d4fa774)
  • +
  • add hints to generics1 and generics2 exercises (31457940)
  • +
  • remove trailing whitespace (d9b69bd1)
  • +
  • installation: first PowerShell command (aa9a943d)
  • +
  • iterators5: derive Clone, Copy (91fc9e31)
  • +
  • quiz1: Updated question description (#794) (d8766496)
  • +
  • try_from_into, from_str: hints for dyn Error (11d2cf0d)
  • +
  • variables5: confine the answer further (48ffcbd2)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.6.0/index.html b/changelog/4.6.0/index.html new file mode 100644 index 0000000..2caa4f8 --- /dev/null +++ b/changelog/4.6.0/index.html @@ -0,0 +1,137 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.6.0

+
+ + +
+ +
+ + + + + 4.6.0 + + + + + Sep 25 2021 at 09:27 UTC + + +
+
+

Features

+
    +
  • add advanced_errs2 (abd6b70c)
  • +
  • add advanced_errs1 (882d535b)
  • +
  • Add a farewell message when quitting watch (1caef0b4)
  • +
  • add more watch commands (a7dc080b, closes #842)
  • +
  • modules: update exercises, add modules3 (#822) (dfd2fab4)
  • +
  • quiz1: add default function name in comment (#838) (0a11bad7)
  • +
+

Bug Fixes

+
    +
  • Correct small typo in exercises/conversions/from_str.rs (86cc8529)
  • +
  • cli: typo in exercise.rs (#848) (06d5c097)
  • +
  • from_str, try_from_into: custom error types (2dc93cad)
  • +
  • modules2: fix typo (#835) (1c3beb0a)
  • +
  • move_semantics5: + +
  • +
  • quiz1: Fix inconsistent wording (#826) (03131a3d)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.7.0/index.html b/changelog/4.7.0/index.html new file mode 100644 index 0000000..cb1c97f --- /dev/null +++ b/changelog/4.7.0/index.html @@ -0,0 +1,164 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.7.0

+
+ + +
+ +
+ + + + + 4.7.0 + + + + + Apr 14 2022 at 09:23 UTC + + +
+
+

Features

+
    +
  • Add move_semantics6.rs exercise (#908) (3f0e1303)
  • +
  • intro: Add intro section. (21c9f441)
  • +
  • Include exercises folder in the project structure behind a feature, enabling rust-analyzer to work (#917) (179a75a6)
  • +
+

Bug Fixes

+
    +
  • Fix a few spelling mistakes (1c0fe3cb)
  • +
  • cli: +
      +
    • Move long text strings into constants. (f78c4802)
    • +
    • Replace filter_map() with find_map() (9b27e8d)
    • +
    +
  • +
  • clippy1: +
      +
    • Set clippy::float_cmp lint to deny (#907) (71a06044)
    • +
    • Updated code to test correctness clippy lint with approx_constant lint rule (f2650de3)
    • +
    +
  • +
  • errors1: +
      +
    • Add a comment to make the purpose more clear (#486) (cbcde345)
    • +
    • Don't modify tests (#958) (60bb7cc)
    • +
    +
  • +
  • errors6: Remove existing answer code (43d0623)
  • +
  • functions5: Remove wrong new line and small English improvements (#885) (8ef4869b)
  • +
  • install: protect path with whitespaces using quotes and stop at the first error (d114847f)
  • +
  • intro1: Add compiler error explanation. (9b8de655)
  • +
  • iterators1: reorder TODO steps (0bd7a063)
  • +
  • move_semantics2: Add comment (89650f80)
  • +
  • move_semantics5: correct typo (#857) (46c28d5c)
  • +
  • quiz1: update to say quiz covers "If" (1622e8c1)
  • +
  • structs3: +
      +
    • Add a hint for panic (#608) (4f7ff5d9)
    • +
    • remove redundant 'return' (#852) (bf33829d)
    • +
    • Assigned value to cents_per_gram in test (d1ee2da)
    • +
    +
  • +
  • structs3.rs: assigned value to cents_per_gram in test (d1ee2daf)
  • +
  • traits1: rename test functions to snake case (#854) (1663a16e)
  • +
+

Documentation improvements

+
    +
  • Add hints on how to get GCC installed (#741) (bc56861)
  • +
  • Fix some code blocks that were not highlighted (17f9d74)
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.7.1/index.html b/changelog/4.7.1/index.html new file mode 100644 index 0000000..c1b2e9c --- /dev/null +++ b/changelog/4.7.1/index.html @@ -0,0 +1,132 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.7.1

+
+ + +
+ +
+ + + + + 4.7.1 + + + + + Apr 20 2022 at 07:46 UTC + + +
+
+

Features

+
    +
  • The amount of dependency crates that need to be compiled went down from ~65 to +~45 by bumping dependency versions.
  • +
  • The minimum Rust version in the install scripts has been bumped to 1.56.0 (this isn't in +the release itself, since install scripts don't really get versioned)
  • +
+

Bug Fixes

+
    +
  • arc1: A small part has been rewritten using a more functional code style (#968).
  • +
  • using_as: A small part has been refactored to use sum instead of fold, resulting +in better readability.
  • +
+

Housekeeping

+
    +
  • The changelog will now be manually written instead of being automatically generated by the +Git log.
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/4.8.0/index.html b/changelog/4.8.0/index.html new file mode 100644 index 0000000..58c9aab --- /dev/null +++ b/changelog/4.8.0/index.html @@ -0,0 +1,132 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 4.8.0

+
+ + +
+ +
+ + + + + 4.8.0 + + + + + Jul 1 2022 at 14:50 UTC + + +
+
+

Features

+
    +
  • Added a progress indicator for rustlings watch.
  • +
  • The installation script now checks for Rustup being installed.
  • +
  • Added a rustlings lsp command to enable rust-analyzer.
  • +
+

Bug Fixes

+
    +
  • move_semantics5: Replaced "in vogue" with "in scope" in hint.
  • +
  • if2: Fixed a typo in the hint.
  • +
  • variables1: Fixed an incorrect line reference in the hint.
  • +
  • Fixed an out of bounds check in the installation Bash script.
  • +
+

Housekeeping

+
    +
  • Replaced the git.io URL with the fully qualified URL because of git.io's sunsetting.
  • +
  • Removed the deprecated Rust GitPod extension.
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.0.0/index.html b/changelog/5.0.0/index.html new file mode 100644 index 0000000..8495f34 --- /dev/null +++ b/changelog/5.0.0/index.html @@ -0,0 +1,184 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.0.0

+
+ + +
+ +
+ + + + + 5.0.0 + + + + + Jul 16 2022 at 12:36 UTC + + +
+
+

Features

+
    +
  • Hint comments in exercises now also include a reference to the +hint watch mode subcommand.
  • +
  • intro1: Added more hints to point the user to the source file.
  • +
  • variables: Switched variables3 and variables4.
  • +
  • Moved vec and primitive_types exercises before move_semantics.
  • +
  • Renamed vec to vecs to be more in line with the naming in general.
  • +
  • Split up the collections exercises in their own folders.
  • +
  • vec2: Added a second part of the function that provides an alternative, +immutable way of modifying vec values.
  • +
  • enums3: Added a hint.
  • +
  • Moved strings before modules.
  • +
  • Added a strings3 exercise to teach modifying strings.
  • +
  • Added a hashmaps3 exercise for some advanced usage of hashmaps.
  • +
  • Moved the original quiz2 to be strings4, since it only tested strings +anyways.
  • +
  • Reworked quiz2 into a new exercise that tests more chapters.
  • +
  • Renamed option to options.
  • +
  • options1: Rewrote parts of the exercise to remove the weird array +iteration stuff.
  • +
  • Moved generics3 to be quiz3.
  • +
  • Moved box/arc exercises behind iterators.
  • +
  • iterators4: Added a test for factorials of zero.
  • +
  • Split threads1 between two exercises, the first one focusing more on +JoinHandles.
  • +
  • Added a threads3 exercises that uses std::sync::mpsc.
  • +
  • Added a clippy3 exercises with some more interesting checks.
  • +
  • as_ref_mut: Added a section that actually tests AsMut.
  • +
  • Added 3 new lifetimes exercises.
  • +
  • Added 3 new traits exercises.
  • +
+

Bug Fixes

+
    +
  • variables2: Made output messages more verbose.
  • +
  • variables5: Added a nudging hint about shadowing.
  • +
  • variables6: Fixed link to book.
  • +
  • functions: Clarified the README wording. Generally cleaned up +some hints and added some extra comments.
  • +
  • if2: Renamed function name to foo_if_fizz.
  • +
  • move_semantics: Clarified some hints.
  • +
  • quiz1: Renamed the function name to be more verbose.
  • +
  • structs1: Use an integer type instead of strings. Renamed "unit structs" +to "unit-like structs", as is used in the book.
  • +
  • structs3: Added the panic! statement in from the beginning.
  • +
  • errors1: Use is_empty() instead of len() > 0
  • +
  • errors3: Improved the hint.
  • +
  • errors5: Improved exercise instructions and the hint.
  • +
  • errors6: Provided the skeleton of one of the functions that's supposed +to be implemented.
  • +
  • iterators3: Inserted todo! into divide() to keep a compiler error +from happening.
  • +
  • from_str: Added a hint comment about string error message conversion with +Box<dyn Error>.
  • +
  • try_from_into: Fixed the function name in comment.
  • +
+

Removed

+
    +
  • Removed the legacy LSP feature that was using mod.rs files.
  • +
  • Removed quiz4.
  • +
  • Removed advanced_errs. These were the last exercises in the recommended +order, and I've always felt like they didn't quite fit in with the mostly +simple, book-following style we've had in Rustlings.
  • +
+

Housekeeping

+
    +
  • Added missing exercises to the book index.
  • +
  • Updated spacing in Cargo.toml.
  • +
  • Added a GitHub actions config so that tests run on every PR/commit.
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.1.0/index.html b/changelog/5.1.0/index.html new file mode 100644 index 0000000..f6bcdd4 --- /dev/null +++ b/changelog/5.1.0/index.html @@ -0,0 +1,152 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.1.0

+
+ + +
+ +
+ + + + + 5.1.0 + + + + + Aug 16 2022 at 07:56 UTC + + +
+
+

Features

+
    +
  • Added a new rc1 exercise.
  • +
  • Added a new cow1 exercise.
  • +
+

Bug Fixes

+
    +
  • variables5: Corrected reference to previous exercise
  • +
  • functions4: Fixed line number reference
  • +
  • strings3: Clarified comment wording
  • +
  • traits4, traits5: Fixed line number reference
  • +
  • traits5: +
      +
    • Fixed typo in "parameter"
    • +
    • Made exercise prefer a traits-based solution
    • +
    +
  • +
  • lifetimes2: Improved hint
  • +
  • threads3: Fixed typo in hint
  • +
  • box1: Replaced unimplemented! with todo!
  • +
  • errors5: Provided an explanation for usage of Box<dyn Error>
  • +
  • quiz2: Fixed a typo
  • +
  • macros: Updated the macros book link
  • +
  • options1: +
      +
    • Removed unused code
    • +
    • Added more granular tests
    • +
    +
  • +
  • Fixed some comment syntax shenanigans in info.toml
  • +
+

Housekeeping

+
    +
  • Fixed a typo in .editorconfig
  • +
  • Fixed a typo in integration_tests.rs
  • +
  • Clarified manual installation instructions using cargo install --path .
  • +
  • Added a link to our Zulip in the readme file
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.1.1/index.html b/changelog/5.1.1/index.html new file mode 100644 index 0000000..6c92eef --- /dev/null +++ b/changelog/5.1.1/index.html @@ -0,0 +1,118 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.1.1

+
+ + +
+ +
+ + + + + 5.1.1 + + + + + Aug 17 2022 at 08:44 UTC + + +
+
+

Bug Fixes

+
    +
  • Fixed an incorrect assertion in options1
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.2.0/index.html b/changelog/5.2.0/index.html new file mode 100644 index 0000000..5b66a30 --- /dev/null +++ b/changelog/5.2.0/index.html @@ -0,0 +1,128 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.2.0

+
+ + +
+ +
+ + + + + 5.2.0 + + + + + Aug 27 2022 at 18:50 UTC + + +
+
+

Added

+
    +
  • Added a reset command
  • +
+

Changed

+
    +
  • options2: Convert the exercise to use tests
  • +
+

Fixed

+
    +
  • threads3: Fixed a typo
  • +
  • quiz1: Adjusted the explanations to be consistent with +the tests
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.2.1/index.html b/changelog/5.2.1/index.html new file mode 100644 index 0000000..59ac709 --- /dev/null +++ b/changelog/5.2.1/index.html @@ -0,0 +1,125 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.2.1

+
+ + +
+ +
+ + + + + 5.2.1 + + + + + Sep 6 2022 at 10:23 UTC + + +
+
+

Fixed

+
    +
  • quiz1: Reworded the comment to actually reflect what's going on in the tests. +Also added another assert just to make sure.
  • +
  • rc1: Fixed a typo in the hint.
  • +
  • lifetimes: Add quotes to the println! output, for readability.
  • +
+

Housekeeping

+
    +
  • Fixed a typo in README.md
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.3.0/index.html b/changelog/5.3.0/index.html new file mode 100644 index 0000000..e709165 --- /dev/null +++ b/changelog/5.3.0/index.html @@ -0,0 +1,144 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.3.0

+
+ + +
+ +
+ + + + + 5.3.0 + + + + + Dec 23 2022 at 16:10 UTC + + +
+
+

Added

+
    +
  • cli: Added a percentage display in watch mode
  • +
  • Added a flake.nix for Nix users
  • +
+

Changed

+
    +
  • structs3: Added an additional test
  • +
  • macros: Added a link to MacroKata in the README
  • +
+

Fixed

+
    +
  • strings3: Added a link to std in the hint
  • +
  • threads1: Corrected a hint link
  • +
  • iterators1: Clarified hint steps
  • +
  • errors5: Fix a typo in the hint
  • +
  • options1: Clarified on the usage of the 24-hour system
  • +
  • threads2, threads3: Explicitly use Arc::clone
  • +
  • structs3: Clarifed the hint
  • +
  • quiz2, as_ref_mut, options1, traits1, traits2: Clarified hints
  • +
  • traits1, traits2, cli: Tidied up unmatching backticks
  • +
  • enums2: Removed unneccessary indirection of self
  • +
  • enums3: Added an extra tuple comment
  • +
+

Housekeeping

+
    +
  • Added a VSCode extension recommendation
  • +
  • Applied some Clippy and rustfmt formatting
  • +
  • Added a note on Windows PowerShell and other shell compatibility
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.4.0/index.html b/changelog/5.4.0/index.html new file mode 100644 index 0000000..1b5875f --- /dev/null +++ b/changelog/5.4.0/index.html @@ -0,0 +1,149 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.4.0

+
+ + +
+ +
+ + + + + 5.4.0 + + + + + Feb 12 2023 at 17:03 UTC + + +
+
+

Changed

+
    +
  • Reordered exercises +
      +
    • Unwrapped standard_library_types into iterators and smart_pointers
    • +
    • Moved smart pointer exercises behind threads
    • +
    • Ordered rc1 before arc1
    • +
    +
  • +
  • intro1: Added a note on rustlings lsp
  • +
  • threads1: Panic if threads are not joined
  • +
  • cli: +
      +
    • Made progress bar update proportional to amount of files verified
    • +
    • Decreased watch delay from 2 to 1 second
    • +
    +
  • +
+

Fixed

+
    +
  • Capitalized "Rust" in exercise hints
  • +
  • enums3: Removed superfluous tuple brackets
  • +
  • quiz2, clippy1, iterators1: Fixed a typo
  • +
  • rc1: Fixed a prompt error
  • +
  • cli: +
      +
    • Fixed a typo in a method name
    • +
    • Specified the edition in rustc commands
    • +
    +
  • +
+

Housekeeping

+
    +
  • Bumped min Rust version to 1.58 in installation script
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.4.1/index.html b/changelog/5.4.1/index.html new file mode 100644 index 0000000..7b251a8 --- /dev/null +++ b/changelog/5.4.1/index.html @@ -0,0 +1,127 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.4.1

+
+ + +
+ +
+ + + + + 5.4.1 + + + + + Mar 10 2023 at 16:40 UTC + + +
+
+

Changed

+
    +
  • vecs: Added links to iter_mut and map to README.md
  • +
  • cow1: Changed main to tests
  • +
  • iterators1: Formatted according to rustfmt
  • +
+

Fixed

+
    +
  • errors5: Unified undisclosed type notation
  • +
  • arc1: Improved readability by avoiding implicit dereference
  • +
  • macros4: Prevented auto-fix by adding #[rustfmt::skip]
  • +
  • cli: Actually show correct progress percentages
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.5.0/index.html b/changelog/5.5.0/index.html new file mode 100644 index 0000000..e12f504 --- /dev/null +++ b/changelog/5.5.0/index.html @@ -0,0 +1,146 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.5.0

+
+ + +
+ +
+ + + + + 5.5.0 + + + + + May 17 2023 at 14:31 UTC + + +
+
+

Added

+
    +
  • strings2: Added a reference to the book chapter for reference conversion
  • +
  • lifetimes: Added a link to the lifetimekata project
  • +
  • Added a new tests4 exercises, which teaches about testing for panics
  • +
  • Added a ! prefix command to watch mode that runs an external command
  • +
  • Added a --success-hints option to watch mode that shows hints on exercise success
  • +
+

Changed

+
    +
  • vecs2: Renamed iterator variable bindings for clarify
  • +
  • lifetimes: Changed order of book references
  • +
  • hashmaps2: Clarified instructions in the todo block
  • +
  • Moved lifetime exercises before test exercises (via the recommended book ordering)
  • +
  • options2: Improved tests for layering options
  • +
  • modules2: Added more information to the hint
  • +
+

Fixed

+
    +
  • errors2: Corrected a comment wording
  • +
  • iterators2: Fixed a spelling mistake in the hint text
  • +
  • variables: Wrapped the mut keyword with backticks for readability
  • +
  • move_semantics2: Removed references to line numbers
  • +
  • cow1: Clarified the owned_no_mutation comments
  • +
  • options3: Changed exercise to panic when no match is found
  • +
  • rustlings lsp now generates absolute paths, which should fix VSCode rust-analyzer usage on Windows
  • +
+

Housekeeping

+
    +
  • Added a markdown linter to run on GitHub actions
  • +
  • Split quick installation section into two code blocks
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.5.1/index.html b/changelog/5.5.1/index.html new file mode 100644 index 0000000..28ee45f --- /dev/null +++ b/changelog/5.5.1/index.html @@ -0,0 +1,118 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.5.1

+
+ + +
+ +
+ + + + + 5.5.1 + + + + + May 17 2023 at 19:07 UTC + + +
+
+

Fixed

+
    +
  • Reverted rust-project.json path generation due to an upstream rust-analyzer fix.
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.6.0/index.html b/changelog/5.6.0/index.html new file mode 100644 index 0000000..fc40a6c --- /dev/null +++ b/changelog/5.6.0/index.html @@ -0,0 +1,154 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.6.0

+
+ + +
+ +
+ + + + + 5.6.0 + + + + + Sep 4 2023 at 13:24 UTC + + +
+
+

Added

+
    +
  • New exercise: if3, teaching the user about if let statements.
  • +
  • hashmaps2: Added an extra test function to check if the amount of fruits is higher than zero.
  • +
  • enums3: Added a test for Message.
  • +
  • if1: Added a test case to check equal values.
  • +
  • if3: Added a note specifying that there are no test changes needed.
  • +
+

Changed

+
    +
  • Swapped the order of threads and smart pointer exercises.
  • +
  • Rewrote the CLI to use clap - it's matured much since we switched to argh :)
  • +
  • structs3: Switched from i32 to u32.
  • +
  • move_semantics: Switched 1-4 to tests, and rewrote them to be way simpler, while still teaching about the same +concepts.
  • +
+

Fixed

+
    +
  • iterators5: +
      +
    • Removed an outdated part of the hint.
    • +
    • Renamed variables to use snake_case.
    • +
    +
  • +
  • vecs2: Updated the hint to reference the renamed loop variable.
  • +
  • enums3: Changed message string in test so that it gets properly tested.
  • +
  • strings2: Corrected line number in hint, then removed it (this both happened as part of this release cycle).
  • +
  • primitive_types4: Updated hint to the correct ending index.
  • +
  • quiz1: Removed duplicated sentence from exercise comments.
  • +
  • errors4: Improved comment.
  • +
  • from_into: Fixed test values.
  • +
  • cow1: Added .to_mut() to distinguish from the previous test case.
  • +
  • threads2: Updated hint text to reference the correct book heading.
  • +
+

Housekeeping

+
    +
  • Cleaned up the explanation paragraphs at the start of each exercise.
  • +
  • Lots of Nix housekeeping that I don't feel qualified to write about!
  • +
  • Improved CI workflows, we're now testing on multiple platforms at once.
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/5.6.1/index.html b/changelog/5.6.1/index.html new file mode 100644 index 0000000..39565ba --- /dev/null +++ b/changelog/5.6.1/index.html @@ -0,0 +1,127 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Rustlings 5.6.1

+
+ + +
+ +
+ + + + + 5.6.1 + + + + + Sep 18 2023 at 08:18 UTC + + +
+
+

Changed

+
    +
  • Converted all exercises with assertions to test mode.
  • +
+

Fixed

+
    +
  • cow1: Reverted regression introduced by calling to_mut where it +shouldn't have been called, and clarified comment.
  • +
  • primitive_types3: Require at least an array of 100 elements.
  • +
  • Removed hint comments when no hint exists for the exercise.
  • +
  • as_ref_mut: Fixed a typo in a test function name.
  • +
  • enums3: Fixed formatting with rustfmt.
  • +
+

+ +
+
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html new file mode 100644 index 0000000..e7e6165 --- /dev/null +++ b/changelog/index.html @@ -0,0 +1,1833 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + +
+

Releases

+
+ + +
+ + +
+

+ + + Rustlings 5.6.1 + + +

+
+ + + + + 5.6.1 + + + + + Sep 18 2023 at 08:18 UTC + + +
+
+

Changed

+
    +
  • Converted all exercises with assertions to test mode.
  • +
+

Fixed

+
    +
  • cow1: Reverted regression introduced by calling to_mut where it +shouldn't have been called, and clarified comment.
  • +
  • primitive_types3: Require at least an array of 100 elements.
  • +
  • Removed hint comments when no hint exists for the exercise.
  • +
  • as_ref_mut: Fixed a typo in a test function name.
  • +
  • enums3: Fixed formatting with rustfmt.
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.6.0 + + +

+
+ + + + + 5.6.0 + + + + + Sep 4 2023 at 13:24 UTC + + +
+
+

Added

+
    +
  • New exercise: if3, teaching the user about if let statements.
  • +
  • hashmaps2: Added an extra test function to check if the amount of fruits is higher than zero.
  • +
  • enums3: Added a test for Message.
  • +
  • if1: Added a test case to check equal values.
  • +
  • if3: Added a note specifying that there are no test changes needed.
  • +
+

Changed

+
    +
  • Swapped the order of threads and smart pointer exercises.
  • +
  • Rewrote the CLI to use clap - it's matured much since we switched to argh :)
  • +
  • structs3: Switched from i32 to u32.
  • +
  • move_semantics: Switched 1-4 to tests, and rewrote them to be way simpler, while still teaching about the same +concepts.
  • +
+

Fixed

+
    +
  • iterators5: +
      +
    • Removed an outdated part of the hint.
    • +
    • Renamed variables to use snake_case.
    • +
    +
  • +
  • vecs2: Updated the hint to reference the renamed loop variable.
  • +
  • enums3: Changed message string in test so that it gets properly tested.
  • +
  • strings2: Corrected line number in hint, then removed it (this both happened as part of this release cycle).
  • +
  • primitive_types4: Updated hint to the correct ending index.
  • +
  • quiz1: Removed duplicated sentence from exercise comments.
  • +
  • errors4: Improved comment.
  • +
  • from_into: Fixed test values.
  • +
  • cow1: Added .to_mut() to distinguish from the previous test case.
  • +
  • threads2: Updated hint text to reference the correct book heading.
  • +
+

Housekeeping

+
    +
  • Cleaned up the explanation paragraphs at the start of each exercise.
  • +
  • Lots of Nix housekeeping that I don't feel qualified to write about!
  • +
  • Improved CI workflows, we're now testing on multiple platforms at once.
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.5.1 + + +

+
+ + + + + 5.5.1 + + + + + May 17 2023 at 19:07 UTC + + +
+
+

Fixed

+
    +
  • Reverted rust-project.json path generation due to an upstream rust-analyzer fix.
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.5.0 + + +

+
+ + + + + 5.5.0 + + + + + May 17 2023 at 14:31 UTC + + +
+
+

Added

+
    +
  • strings2: Added a reference to the book chapter for reference conversion
  • +
  • lifetimes: Added a link to the lifetimekata project
  • +
  • Added a new tests4 exercises, which teaches about testing for panics
  • +
  • Added a ! prefix command to watch mode that runs an external command
  • +
  • Added a --success-hints option to watch mode that shows hints on exercise success
  • +
+

Changed

+
    +
  • vecs2: Renamed iterator variable bindings for clarify
  • +
  • lifetimes: Changed order of book references
  • +
  • hashmaps2: Clarified instructions in the todo block
  • +
  • Moved lifetime exercises before test exercises (via the recommended book ordering)
  • +
  • options2: Improved tests for layering options
  • +
  • modules2: Added more information to the hint
  • +
+

Fixed

+
    +
  • errors2: Corrected a comment wording
  • +
  • iterators2: Fixed a spelling mistake in the hint text
  • +
  • variables: Wrapped the mut keyword with backticks for readability
  • +
  • move_semantics2: Removed references to line numbers
  • +
  • cow1: Clarified the owned_no_mutation comments
  • +
  • options3: Changed exercise to panic when no match is found
  • +
  • rustlings lsp now generates absolute paths, which should fix VSCode rust-analyzer usage on Windows
  • +
+

Housekeeping

+
    +
  • Added a markdown linter to run on GitHub actions
  • +
  • Split quick installation section into two code blocks
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.4.1 + + +

+
+ + + + + 5.4.1 + + + + + Mar 10 2023 at 16:40 UTC + + +
+
+

Changed

+
    +
  • vecs: Added links to iter_mut and map to README.md
  • +
  • cow1: Changed main to tests
  • +
  • iterators1: Formatted according to rustfmt
  • +
+

Fixed

+
    +
  • errors5: Unified undisclosed type notation
  • +
  • arc1: Improved readability by avoiding implicit dereference
  • +
  • macros4: Prevented auto-fix by adding #[rustfmt::skip]
  • +
  • cli: Actually show correct progress percentages
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.4.0 + + +

+
+ + + + + 5.4.0 + + + + + Feb 12 2023 at 17:03 UTC + + +
+
+

Changed

+
    +
  • Reordered exercises +
      +
    • Unwrapped standard_library_types into iterators and smart_pointers
    • +
    • Moved smart pointer exercises behind threads
    • +
    • Ordered rc1 before arc1
    • +
    +
  • +
  • intro1: Added a note on rustlings lsp
  • +
  • threads1: Panic if threads are not joined
  • +
  • cli: +
      +
    • Made progress bar update proportional to amount of files verified
    • +
    • Decreased watch delay from 2 to 1 second
    • +
    +
  • +
+

Fixed

+
    +
  • Capitalized "Rust" in exercise hints
  • +
  • enums3: Removed superfluous tuple brackets
  • +
  • quiz2, clippy1, iterators1: Fixed a typo
  • +
  • rc1: Fixed a prompt error
  • +
  • cli: +
      +
    • Fixed a typo in a method name
    • +
    • Specified the edition in rustc commands
    • +
    +
  • +
+

Housekeeping

+
    +
  • Bumped min Rust version to 1.58 in installation script
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.3.0 + + +

+
+ + + + + 5.3.0 + + + + + Dec 23 2022 at 16:10 UTC + + +
+
+

Added

+
    +
  • cli: Added a percentage display in watch mode
  • +
  • Added a flake.nix for Nix users
  • +
+

Changed

+
    +
  • structs3: Added an additional test
  • +
  • macros: Added a link to MacroKata in the README
  • +
+

Fixed

+
    +
  • strings3: Added a link to std in the hint
  • +
  • threads1: Corrected a hint link
  • +
  • iterators1: Clarified hint steps
  • +
  • errors5: Fix a typo in the hint
  • +
  • options1: Clarified on the usage of the 24-hour system
  • +
  • threads2, threads3: Explicitly use Arc::clone
  • +
  • structs3: Clarifed the hint
  • +
  • quiz2, as_ref_mut, options1, traits1, traits2: Clarified hints
  • +
  • traits1, traits2, cli: Tidied up unmatching backticks
  • +
  • enums2: Removed unneccessary indirection of self
  • +
  • enums3: Added an extra tuple comment
  • +
+

Housekeeping

+
    +
  • Added a VSCode extension recommendation
  • +
  • Applied some Clippy and rustfmt formatting
  • +
  • Added a note on Windows PowerShell and other shell compatibility
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.2.1 + + +

+
+ + + + + 5.2.1 + + + + + Sep 6 2022 at 10:23 UTC + + +
+
+

Fixed

+
    +
  • quiz1: Reworded the comment to actually reflect what's going on in the tests. +Also added another assert just to make sure.
  • +
  • rc1: Fixed a typo in the hint.
  • +
  • lifetimes: Add quotes to the println! output, for readability.
  • +
+

Housekeeping

+
    +
  • Fixed a typo in README.md
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.2.0 + + +

+
+ + + + + 5.2.0 + + + + + Aug 27 2022 at 18:50 UTC + + +
+
+

Added

+
    +
  • Added a reset command
  • +
+

Changed

+
    +
  • options2: Convert the exercise to use tests
  • +
+

Fixed

+
    +
  • threads3: Fixed a typo
  • +
  • quiz1: Adjusted the explanations to be consistent with +the tests
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.1.1 + + +

+
+ + + + + 5.1.1 + + + + + Aug 17 2022 at 08:44 UTC + + +
+
+

Bug Fixes

+
    +
  • Fixed an incorrect assertion in options1
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.1.0 + + +

+
+ + + + + 5.1.0 + + + + + Aug 16 2022 at 07:56 UTC + + +
+
+

Features

+
    +
  • Added a new rc1 exercise.
  • +
  • Added a new cow1 exercise.
  • +
+

Bug Fixes

+
    +
  • variables5: Corrected reference to previous exercise
  • +
  • functions4: Fixed line number reference
  • +
  • strings3: Clarified comment wording
  • +
  • traits4, traits5: Fixed line number reference
  • +
  • traits5: +
      +
    • Fixed typo in "parameter"
    • +
    • Made exercise prefer a traits-based solution
    • +
    +
  • +
  • lifetimes2: Improved hint
  • +
  • threads3: Fixed typo in hint
  • +
  • box1: Replaced unimplemented! with todo!
  • +
  • errors5: Provided an explanation for usage of Box<dyn Error>
  • +
  • quiz2: Fixed a typo
  • +
  • macros: Updated the macros book link
  • +
  • options1: +
      +
    • Removed unused code
    • +
    • Added more granular tests
    • +
    +
  • +
  • Fixed some comment syntax shenanigans in info.toml
  • +
+

Housekeeping

+
    +
  • Fixed a typo in .editorconfig
  • +
  • Fixed a typo in integration_tests.rs
  • +
  • Clarified manual installation instructions using cargo install --path .
  • +
  • Added a link to our Zulip in the readme file
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 5.0.0 + + +

+
+ + + + + 5.0.0 + + + + + Jul 16 2022 at 12:36 UTC + + +
+
+

Features

+
    +
  • Hint comments in exercises now also include a reference to the +hint watch mode subcommand.
  • +
  • intro1: Added more hints to point the user to the source file.
  • +
  • variables: Switched variables3 and variables4.
  • +
  • Moved vec and primitive_types exercises before move_semantics.
  • +
  • Renamed vec to vecs to be more in line with the naming in general.
  • +
  • Split up the collections exercises in their own folders.
  • +
  • vec2: Added a second part of the function that provides an alternative, +immutable way of modifying vec values.
  • +
  • enums3: Added a hint.
  • +
  • Moved strings before modules.
  • +
  • Added a strings3 exercise to teach modifying strings.
  • +
  • Added a hashmaps3 exercise for some advanced usage of hashmaps.
  • +
  • Moved the original quiz2 to be strings4, since it only tested strings +anyways.
  • +
  • Reworked quiz2 into a new exercise that tests more chapters.
  • +
  • Renamed option to options.
  • +
  • options1: Rewrote parts of the exercise to remove the weird array +iteration stuff.
  • +
  • Moved generics3 to be quiz3.
  • +
  • Moved box/arc exercises behind iterators.
  • +
  • iterators4: Added a test for factorials of zero.
  • +
  • Split threads1 between two exercises, the first one focusing more on +JoinHandles.
  • +
  • Added a threads3 exercises that uses std::sync::mpsc.
  • +
  • Added a clippy3 exercises with some more interesting checks.
  • +
  • as_ref_mut: Added a section that actually tests AsMut.
  • +
  • Added 3 new lifetimes exercises.
  • +
  • Added 3 new traits exercises.
  • +
+

Bug Fixes

+
    +
  • variables2: Made output messages more verbose.
  • +
  • variables5: Added a nudging hint about shadowing.
  • +
  • variables6: Fixed link to book.
  • +
  • functions: Clarified the README wording. Generally cleaned up +some hints and added some extra comments.
  • +
  • if2: Renamed function name to foo_if_fizz.
  • +
  • move_semantics: Clarified some hints.
  • +
  • quiz1: Renamed the function name to be more verbose.
  • +
  • structs1: Use an integer type instead of strings. Renamed "unit structs" +to "unit-like structs", as is used in the book.
  • +
  • structs3: Added the panic! statement in from the beginning.
  • +
  • errors1: Use is_empty() instead of len() > 0
  • +
  • errors3: Improved the hint.
  • +
  • errors5: Improved exercise instructions and the hint.
  • +
  • errors6: Provided the skeleton of one of the functions that's supposed +to be implemented.
  • +
  • iterators3: Inserted todo! into divide() to keep a compiler error +from happening.
  • +
  • from_str: Added a hint comment about string error message conversion with +Box<dyn Error>.
  • +
  • try_from_into: Fixed the function name in comment.
  • +
+

Removed

+
    +
  • Removed the legacy LSP feature that was using mod.rs files.
  • +
  • Removed quiz4.
  • +
  • Removed advanced_errs. These were the last exercises in the recommended +order, and I've always felt like they didn't quite fit in with the mostly +simple, book-following style we've had in Rustlings.
  • +
+

Housekeeping

+
    +
  • Added missing exercises to the book index.
  • +
  • Updated spacing in Cargo.toml.
  • +
  • Added a GitHub actions config so that tests run on every PR/commit.
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.8.0 + + +

+
+ + + + + 4.8.0 + + + + + Jul 1 2022 at 14:50 UTC + + +
+
+

Features

+
    +
  • Added a progress indicator for rustlings watch.
  • +
  • The installation script now checks for Rustup being installed.
  • +
  • Added a rustlings lsp command to enable rust-analyzer.
  • +
+

Bug Fixes

+
    +
  • move_semantics5: Replaced "in vogue" with "in scope" in hint.
  • +
  • if2: Fixed a typo in the hint.
  • +
  • variables1: Fixed an incorrect line reference in the hint.
  • +
  • Fixed an out of bounds check in the installation Bash script.
  • +
+

Housekeeping

+
    +
  • Replaced the git.io URL with the fully qualified URL because of git.io's sunsetting.
  • +
  • Removed the deprecated Rust GitPod extension.
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.7.1 + + +

+
+ + + + + 4.7.1 + + + + + Apr 20 2022 at 07:46 UTC + + +
+
+

Features

+
    +
  • The amount of dependency crates that need to be compiled went down from ~65 to +~45 by bumping dependency versions.
  • +
  • The minimum Rust version in the install scripts has been bumped to 1.56.0 (this isn't in +the release itself, since install scripts don't really get versioned)
  • +
+

Bug Fixes

+
    +
  • arc1: A small part has been rewritten using a more functional code style (#968).
  • +
  • using_as: A small part has been refactored to use sum instead of fold, resulting +in better readability.
  • +
+

Housekeeping

+
    +
  • The changelog will now be manually written instead of being automatically generated by the +Git log.
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.7.0 + + +

+
+ + + + + 4.7.0 + + + + + Apr 14 2022 at 09:23 UTC + + +
+
+

Features

+
    +
  • Add move_semantics6.rs exercise (#908) (3f0e1303)
  • +
  • intro: Add intro section. (21c9f441)
  • +
  • Include exercises folder in the project structure behind a feature, enabling rust-analyzer to work (#917) (179a75a6)
  • +
+

Bug Fixes

+
    +
  • Fix a few spelling mistakes (1c0fe3cb)
  • +
  • cli: +
      +
    • Move long text strings into constants. (f78c4802)
    • +
    • Replace filter_map() with find_map() (9b27e8d)
    • +
    +
  • +
  • clippy1: +
      +
    • Set clippy::float_cmp lint to deny (#907) (71a06044)
    • +
    • Updated code to test correctness clippy lint with approx_constant lint rule (f2650de3)
    • +
    +
  • +
  • errors1: +
      +
    • Add a comment to make the purpose more clear (#486) (cbcde345)
    • +
    • Don't modify tests (#958) (60bb7cc)
    • +
    +
  • +
  • errors6: Remove existing answer code (43d0623)
  • +
  • functions5: Remove wrong new line and small English improvements (#885) (8ef4869b)
  • +
  • install: protect path with whitespaces using quotes and stop at the first error (d114847f)
  • +
  • intro1: Add compiler error explanation. (9b8de655)
  • +
  • iterators1: reorder TODO steps (0bd7a063)
  • +
  • move_semantics2: Add comment (89650f80)
  • +
  • move_semantics5: correct typo (#857) (46c28d5c)
  • +
  • quiz1: update to say quiz covers "If" (1622e8c1)
  • +
  • structs3: +
      +
    • Add a hint for panic (#608) (4f7ff5d9)
    • +
    • remove redundant 'return' (#852) (bf33829d)
    • +
    • Assigned value to cents_per_gram in test (d1ee2da)
    • +
    +
  • +
  • structs3.rs: assigned value to cents_per_gram in test (d1ee2daf)
  • +
  • traits1: rename test functions to snake case (#854) (1663a16e)
  • +
+

Documentation improvements

+
    +
  • Add hints on how to get GCC installed (#741) (bc56861)
  • +
  • Fix some code blocks that were not highlighted (17f9d74)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.6.0 + + +

+
+ + + + + 4.6.0 + + + + + Sep 25 2021 at 09:27 UTC + + +
+
+

Features

+
    +
  • add advanced_errs2 (abd6b70c)
  • +
  • add advanced_errs1 (882d535b)
  • +
  • Add a farewell message when quitting watch (1caef0b4)
  • +
  • add more watch commands (a7dc080b, closes #842)
  • +
  • modules: update exercises, add modules3 (#822) (dfd2fab4)
  • +
  • quiz1: add default function name in comment (#838) (0a11bad7)
  • +
+

Bug Fixes

+
    +
  • Correct small typo in exercises/conversions/from_str.rs (86cc8529)
  • +
  • cli: typo in exercise.rs (#848) (06d5c097)
  • +
  • from_str, try_from_into: custom error types (2dc93cad)
  • +
  • modules2: fix typo (#835) (1c3beb0a)
  • +
  • move_semantics5: + +
  • +
  • quiz1: Fix inconsistent wording (#826) (03131a3d)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.5.0 + + +

+
+ + + + + 4.5.0 + + + + + Jul 7 2021 at 20:30 UTC + + +
+
+

Features

+
    +
  • Add move_semantics5 exercise. (#746) (399ab328)
  • +
  • cli: Add "next" to run the next unsolved exercise. (#785) (d20e413a)
  • +
+

Bug Fixes

+
    +
  • rename result1 to errors4 (50ab289d)
  • +
  • move_semantics5 hints (1b858285)
  • +
  • remove trailing whitespaces from iterators1 (4d4fa774)
  • +
  • add hints to generics1 and generics2 exercises (31457940)
  • +
  • remove trailing whitespace (d9b69bd1)
  • +
  • installation: first PowerShell command (aa9a943d)
  • +
  • iterators5: derive Clone, Copy (91fc9e31)
  • +
  • quiz1: Updated question description (#794) (d8766496)
  • +
  • try_from_into, from_str: hints for dyn Error (11d2cf0d)
  • +
  • variables5: confine the answer further (48ffcbd2)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.4.0 + + +

+
+ + + + + 4.4.0 + + + + + Apr 24 2021 at 10:04 UTC + + +
+
+

Bug Fixes

+
    +
  • Fix spelling error in main.rs (91ee27f2)
  • +
  • typo in default out text (644c49f1)
  • +
  • collections: Naming exercises for vectors and hashmap (bef39b12)
  • +
  • from_str: +
      +
    • Correct typos (5f7c89f8)
    • +
    • test for error instead of unwrap/should_panic (15e71535)
    • +
    • use trait objects for from_str (c3e7b831)
    • +
    +
  • +
  • functions3: improve function argument type (#687) (a6509cc4)
  • +
  • hashmap2: Update incorrect assertion (#660) (72aaa15e)
  • +
  • info: Fix typo (#635) (cddc1e86)
  • +
  • iterators2: Moved errors out of tests. (baf4ba17, closes #359)
  • +
  • iterators3: Enabled iterators3.rs to run without commented out tests. (c6712dfc)
  • +
  • main: Let find_exercise work with borrows (347f30bd)
  • +
  • move_semantics4: +
      +
    • Remove redundant "instead" (#640) (cc266d7d)
    • +
    • Small readbility improvement (#617) (10965920)
    • +
    +
  • +
  • option2: Rename uninformative variables (#675) (b4de6594)
  • +
  • quiz3: Force an answer to Q2 (#672) (0d894e6f)
  • +
  • structs: Add 5.3 to structs/README (#652) (6bd791f2)
  • +
  • structs2: correct grammar in hint (#663) (ebdb66c7)
  • +
  • structs3: +
      +
    • reword heading comment (#664) (9f3e8c2d)
    • +
    • add check to prevent naive implementation of is_international (05a753fe)
    • +
    +
  • +
  • threads1: line number correction (7857b0a6)
  • +
  • try_from_into: use trait objects (2e93a588)
  • +
+

Features

+
    +
  • Replace clap with argh (7928122f)
  • +
  • Replace emojis when NO_EMOJI env variable present (8d62a996)
  • +
  • Added iterators5.rs exercise. (b29ea17e)
  • +
  • arc1: Add more details to description and hint (#710) (81be4044)
  • +
  • cli: Improve the list command with options, and then some (8bbe4ff1)
  • +
  • list: + +
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.3.0 + + +

+
+ + + + + 4.3.0 + + + + + Dec 29 2020 at 10:41 UTC + + +
+
+

Features

+
    +
  • Rewrite default out text (44d39112)
  • +
  • match exercise order to book chapters (#541) (033bf119)
  • +
  • Crab? (#586) (fa9f522b)
  • +
  • add "rustlings list" command (838f9f30)
  • +
  • try_from_into: remove duplicate annotation (04f1d079)
  • +
+

Bug Fixes

+
    +
  • update structs README (bcf14cf6)
  • +
  • added missing exercises to info.toml (90cfb6ff)
  • +
  • gives a bit more context to magic number (30644c9a)
  • +
  • functions2: Change signature to trigger precise error message: (#605) (0ef95947)
  • +
  • structs1: Adjust wording (#573) (9334783d)
  • +
  • try_from_into: + +
  • +
  • vec1: Have test compare every element in a and v (9b6c6293)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.2.0 + + +

+
+ + + + + 4.2.0 + + + + + Nov 7 2020 at 13:22 UTC + + +
+
+

Features

+ +

Bug Fixes

+
    +
  • log error output when inotify limit is exceeded (d61b4e5a)
  • +
  • more unique temp_file (5643ef05)
  • +
  • installation: Update the MinRustVersion (21bfb2d4)
  • +
  • iterators2: Update description (#578) (197d3a3d)
  • +
  • primitive_types6: +
      +
    • remove 'unused doc comment' warning (472d8592)
    • +
    • missing comma in test (4fb230da)
    • +
    +
  • +
  • quiz3: Second test is for odd numbers, not even. (#553) (18e0bfef)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.1.0 + + +

+
+ + + + + 4.1.0 + + + + + Oct 5 2020 at 16:45 UTC + + +
+
+

Bug Fixes

+
    +
  • Update rustlings version in Cargo.lock (1cc40bc9)
  • +
  • arc1: index mod should equal thread count (b4062ef6)
  • +
  • enums3: Update Message::ChangeColor to take a tuple. (#457) (4b6540c7)
  • +
  • exercises: adding question mark to quiz2 (101072ab)
  • +
  • generics3: clarify grade change (47f7672c)
  • +
  • structs3: Small adjustment of variable name (114b54cb)
  • +
  • using_as: Add test so that proper type is returned. (#512) (3286c5ec)
  • +
+

Features

+
    +
  • Added iterators1.rs exercise (9642f5a3)
  • +
  • Add ability to run rustlings on repl.it (#471) (8f7b5bd0)
  • +
  • Add gitpod support (#473) (4821a8be)
  • +
  • Remind the user of the hint option (#425) (816b1f5e)
  • +
  • Remind the user of the hint option (#425) (9f61db5d)
  • +
  • cli: Added 'cls' command to 'watch' mode (#474) (4f2468e1)
  • +
  • try_from_into: Add insufficient length test (#469) (523d18b8)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 4.0.0 + + +

+
+ + + + + 4.0.0 + + + + + Jul 8 2020 at 09:41 UTC + + +
+
+

Breaking Changes

+
    +
  • Add a --nocapture option to display test harnesses' outputs (8ad5f9bf)
  • +
  • Rename test to quiz, fixes #244 (010a0456)
  • +
+

Features

+ +

Bug Fixes

+
    +
  • Change then to than (ddd98ad7)
  • +
  • rename quiz1 to tests1 in info (#420) (0dd1c6ca)
  • +
  • fix quiz naming inconsistency (#421) (5563adbb)
  • +
  • confine the user further in variable exercises (06ef4cc6)
  • +
  • update iterator and macro text for typos and clarity (95900828)
  • +
  • update generics2 closes #362 (964c974a)
  • +
  • confusing comment in conversions/try_from_into.rs (c9e4f2cf)
  • +
  • arc1: Passively introduce attributes (#429) (113cdae2)
  • +
  • box1: fix comment typo (#426) (bb2ca251)
  • +
  • errorsn: Try harder to confine the user. (#388) (2b20c8a0)
  • +
  • from_into.rs: typo (a901499e)
  • +
  • generics2: Guide students to the answer (#430) (e6bd8021)
  • +
  • installation: +
      +
    • Provide a backup git reference when tag can't be curl (9e4fb100)
    • +
    • Check if python is available while checking for git,rustc and cargo (9cfb617d)
    • +
    +
  • +
  • option1: +
      +
    • Don't add only zeros to the numbers array (cce6a442)
    • +
    • Add cast to usize, as it is confusing in the context of an exercise about Option (f6cffc7e)
    • +
    +
  • +
  • option2: Add TODO to comments (#400) (10967bce)
  • +
  • options1: Add hint about Array Initialization (#389) (9f75554f)
  • +
  • test2: name of type String and &str (#394) (d6c0a688)
  • +
  • variables6: minor typo (#419) (524e17df)
  • +
+

+ +
+
+ + +
+

+ + + Rustlings 3.0.0 + + +

+
+ + + + + 3.0.0 + + + + + Apr 11 2020 at 22:04 UTC + + +
+
+

Breaking Changes

+
    +
  • make "compile" exercises print output (#278) (3b6d5c)
  • +
+

Bug Fixes

+
    +
  • primitive_types: revert primitive_types4 (#296) (b3a3351e)
  • +
  • run: compile clippy exercise files (#295) (3ab084a4)
  • +
  • conversions: +
      +
    • add additional test to meet exercise rules (#284) (bc22ec3)
    • +
    • remove duplicate not done comment (#292) (dab90f)
    • +
    +
  • +
  • don't hardcode documentation version for traits (#288) (30e6af)
  • +
+

Features

+
    +
  • add Option2 exercise (#290) (86b5c08b)
  • +
  • add exercise for option (#282) (135e5d47)
  • +
  • add new exercises for generics (#280) (76be5e4e)
  • +
  • ci: add buildkite config (b049fa2c)
  • +
+

+

2.2.1 (2020-02-27)

+

Bug Fixes

+
    +
  • Re-add cloning the repo to install scripts (3d9b03c5)
  • +
+

Features

+ +

+ +
+
+ + +
+

+ + + Rustlings 2.2.1 + + +

+
+ + + + + 2.2.1 + + + + + Feb 27 2020 at 18:24 UTC + + +
+
+ +
+
+ + +
+

+ + + Rustlings 2.2.0 + + +

+
+ + + + + 2.2.0 + + + + + Feb 25 2020 at 22:09 UTC + + +
+
+

Bug Fixes

+
    +
  • Update deps to version compatable with aarch64-pc-windows (#263) (19a93428)
  • +
  • docs: +
      +
    • Added a necessary step to Windows installation process (#242) (3906efcd)
    • +
    • Fixed mangled sentence from book; edited for clarity (#266) (ade52ff)
    • +
    • Updated iterators readme to account for iterators4 exercise (#273) (bec8e3a)
    • +
    +
  • +
  • installation: make fatal errors more obvious (#272) (17d0951e)
  • +
  • iterators2: +
      +
    • Remove reference to missing iterators2.rs (#245) (419f7797)
    • +
    +
  • +
  • as_ref_mut: Enable a test and improve per clippy's suggestion (#256) (dfdf809)
  • +
  • tests1: +
      +
    • Change test command (fe10e06c
    • +
    • Correct test command in tests1.rs comment (#263) (39fa7ae)
    • +
    +
  • +
+

Features

+
    +
  • Add variables5.rs exercise (#264) (0c73609e)
  • +
  • Show a completion message when watching (#253) (d25ee55a)
  • +
  • Add type conversion and parsing exercises (#249) (0c85dc11)
  • +
  • Created consistent money unit (#258) (fd57f8f)
  • +
  • Enable test for exercise test4 (#276) (8b971ff)
  • +
  • Added traits exercises (#274 but specifically #216, which originally added +this :heart:) (b559cdd)
  • +
+

+ +
+
+ + +
+

+ + + 2.1.0 + + +

+
+ + + + + 2.1.0 + + + + + Nov 27 2019 at 09:47 UTC + + +
+
+

Bug Fixes

+
    +
  • add line numbers in several exercises and hints (b565c4d3)
  • +
  • arc1: Fix some words in the comment (c42c3b21)
  • +
  • enums: Add link to chapter on pattern syntax (#242) (615ce327)
  • +
  • primitive_types4: + +
  • +
  • strings2: update line number in hint (a09f684f)
  • +
  • variables1: Correct wrong word in comment (fda5a470)
  • +
+

Features

+
    +
  • watch: show hint while watching (8143d57b)
  • +
+

+ +
+
+ + +
+

+ + + 2.0.0 + + +

+
+ + + + + 2.0.0 + + + + + Nov 12 2019 at 11:26 UTC + + +
+
+

Bug Fixes

+
    +
  • default: Clarify the installation procedure (c371b853)
  • +
  • info: Fix trailing newlines for hints (795b6e34)
  • +
  • run: make run never prompt (4b265465)
  • +
+

Breaking Changes

+ +

Features

+
    +
  • cli: check for rustc before doing anything (36a033b8)
  • +
  • hint: Add test for hint (ce9fa6eb)
  • +
+

+

1.5.1 (2019-11-11)

+

Bug Fixes

+
    +
  • errors3: Update hint (dcfb427b, closes #185)
  • +
  • if1: Remove return reference (ad03d180)
  • +
  • strings: Move Strings before Structs (6dcecb38, closes #204)
  • +
  • structs1: Remove misleading comment (f72e5a8f)
  • +
  • threads: Move Threads behind SLT (fbe91a67, closes #205)
  • +
  • watch: clear screen before each verify() (3aff590)
  • +
+

+ +
+
+ + +
+

+ + + 1.5.1 + + +

+
+ + + + + 1.5.1 + + + + + Nov 11 2019 at 13:03 UTC + + +
+
+ +
+
+ + +
+

+ + + 1.5.0 + + +

+
+ + + + + 1.5.0 + + + + + Nov 9 2019 at 09:53 UTC + + +
+
+

Bug Fixes

+
    +
  • test1: Rewrite logic (79a56942)
  • +
  • installation: Fix rustlings installation check (7a252c47)
  • +
  • iterators: Rename iterator3.rs (433d2115)
  • +
  • iterators2: Remove syntax resulting in misleading error message (4cde8664)
  • +
  • option1: +
      +
    • Fix arguments passed to assert! macro (#222) (4c2cf6da)
    • +
    • Fix arguments passed to assert! macro (ead4f7af)
    • +
    • Add test for prematurely passing exercise (a750e4a1)
    • +
    +
  • +
  • primitive_types4: Fail on a slice covering the wrong area (5b1e673c)
  • +
  • readme: http to https (70946b85)
  • +
  • test1: +
      +
    • Swap assertion parameter order (4086d463)
    • +
    • renamed function name to snake case closes #180 (89d5186c)
    • +
    +
  • +
+

Features

+
    +
  • Add enums exercises (dc150321)
  • +
  • Added exercise for struct update syntax (1c4c8764)
  • +
  • iterators2: adds iterators2 exercise including config (9288fccf)
  • +
+

+

1.4.1 (2019-08-13)

+

Bug Fixes

+
    +
  • iterators2: Remove syntax resulting in misleading error message (4cde8664)
  • +
  • option1: Add test for prematurely passing exercise (a750e4a1)
  • +
  • test1: Swap assertion parameter order (4086d463)
  • +
+

+ +
+
+ + +
+

+ + + 1.4.1 + + +

+
+ + + + + 1.4.1 + + + + + Aug 13 2019 at 10:00 UTC + + +
+
+ +
+
+ +
+
+
+ +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..45b434d --- /dev/null +++ b/index.html @@ -0,0 +1,207 @@ + + + + rustlings + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +

rustlings

+ + + +
+ + + +
+

rustlings 🦀❤️

+
+

Greetings and welcome to rustlings. This project contains small exercises to get you used to reading and writing Rust code. This includes reading and responding to compiler messages!

+

...looking for the old, web-based version of Rustlings? Try here

+

Alternatively, for a first-time Rust learner, there are several other resources:

+
    +
  • The Book - The most comprehensive resource for learning Rust, but a bit theoretical sometimes. You will be using this along with Rustlings!
  • +
  • Rust By Example - Learn Rust by solving little exercises! It's almost like rustlings, but online
  • +
+

Getting Started

+

Note: If you're on MacOS, make sure you've installed Xcode and its developer tools by typing xcode-select --install. +Note: If you're on Linux, make sure you've installed gcc. Deb: sudo apt install gcc. Yum: sudo yum -y install gcc.

+

You will need to have Rust installed. You can get it by visiting https://rustup.rs. This'll also install Cargo, Rust's package/project manager.

+

MacOS/Linux

+

Just run:

+
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash
+
+ +

Or if you want it to be installed to a different path:

+
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash -s mypath/
+
+ +

This will install Rustlings and give you access to the rustlings command. Run it to get started!

+

Nix

+

Basically: Clone the repository at the latest tag, finally run nix develop or nix-shell.

+
# find out the latest version at https://github.com/rust-lang/rustlings/releases/latest (on edit 5.6.1)
+git clone -b 5.6.1 --depth 1 https://github.com/rust-lang/rustlings
+cd rustlings
+# if nix version > 2.3
+nix develop
+# if nix version <= 2.3
+nix-shell
+
+ +

Windows

+

In PowerShell (Run as Administrator), set ExecutionPolicy to RemoteSigned:

+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
+
+ +

Then, you can run:

+
Start-BitsTransfer -Source https://raw.githubusercontent.com/rust-lang/rustlings/main/install.ps1 -Destination $env:TMP/install_rustlings.ps1; Unblock-File $env:TMP/install_rustlings.ps1; Invoke-Expression $env:TMP/install_rustlings.ps1
+
+ +

To install Rustlings. Same as on MacOS/Linux, you will have access to the rustlings command after it. Keep in mind that this works best in PowerShell, and any other terminals may give you errors.

+

If you get a permission denied message, you might have to exclude the directory where you cloned Rustlings in your antivirus.

+

Browser

+

Open in Gitpod

+

Open Rustlings On Codespaces

+

Manually

+

Basically: Clone the repository at the latest tag, run cargo install --path ..

+
# find out the latest version at https://github.com/rust-lang/rustlings/releases/latest (on edit 5.6.1)
+git clone -b 5.6.1 --depth 1 https://github.com/rust-lang/rustlings
+cd rustlings
+cargo install --force --path .
+
+ +

If there are installation errors, ensure that your toolchain is up to date. For the latest, run:

+
rustup update
+
+ +

Then, same as above, run rustlings to get started.

+

Doing exercises

+

The exercises are sorted by topic and can be found in the subdirectory rustlings/exercises/<topic>. For every topic there is an additional README file with some resources to get you started on the topic. We really recommend that you have a look at them before you start.

+

The task is simple. Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises are also run as tests, but rustlings handles them all the same. To run the exercises in the recommended order, execute:

+
rustlings watch
+
+ +

This will try to verify the completion of every exercise in a predetermined order (what we think is best for newcomers). It will also rerun automatically every time you change a file in the exercises/ directory. If you want to only run it once, you can use:

+
rustlings verify
+
+ +

This will do the same as watch, but it'll quit after running.

+

In case you want to go by your own order, or want to only verify a single exercise, you can run:

+
rustlings run myExercise1
+
+ +

Or simply use the following command to run the next unsolved exercise in the course:

+
rustlings run next
+
+ +

In case you get stuck, you can run the following command to get a hint for your +exercise:

+
rustlings hint myExercise1
+
+ +

You can also get the hint for the next unsolved exercise with the following command:

+
rustlings hint next
+
+ +

To check your progress, you can run the following command:

+
rustlings list
+
+ +

Testing yourself

+

After every couple of sections, there will be a quiz that'll test your knowledge on a bunch of sections at once. These quizzes are found in exercises/quizN.rs.

+

Enabling rust-analyzer

+

Run the command rustlings lsp which will generate a rust-project.json at the root of the project, this allows rust-analyzer to parse each exercise.

+

Continuing On

+

Once you've completed Rustlings, put your new knowledge to good use! Continue practicing your Rust skills by building your own projects, contributing to Rustlings, or finding other open-source projects to contribute to.

+

Uninstalling Rustlings

+

If you want to remove Rustlings from your system, there are two steps. First, you'll need to remove the exercises folder that the install script created +for you:

+
rm -rf rustlings # or your custom folder name, if you chose and or renamed it
+
+ +

Second, run cargo uninstall to remove the rustlings binary:

+
cargo uninstall rustlings
+
+ +

Now you should be done!

+

Contributing

+

See CONTRIBUTING.md.

+

Contributors ✨

+

Thanks goes to the wonderful people listed in AUTHORS.md 🎉

+ + +
+
+ +
+ + + + + rustlings + +
+
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/oranda-v0.3.1.css b/oranda-v0.3.1.css new file mode 100644 index 0000000..9a4687a --- /dev/null +++ b/oranda-v0.3.1.css @@ -0,0 +1,3 @@ +@import url("https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;700;900&display=swap");@import url("https://fonts.googleapis.com/css2?family=Comfortaa:wght@400;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap");:root{--dark-fg-color:#fff;--light-fg-color:#141414;--light-bg-color:var(--dark-fg-color);--dark-bg-color:var(--light-fg-color);--fg-color:var(--light-fg-color);--bg-color:var(--light-bg-color);--light-link-color:#0284c7;--dark-link-color:#8bb9fe;--link-color:var(--light-link-color);--light-highlight-bg-color:#ededed;--light-highlight-fg-color:#595959;--dark-highlight-bg-color:#27272a;--dark-highlight-fg-color:#ededed;--highlight-fg-color:var(--light-highlight-fg-color);--highlight-bg-color:var(--light-highlight-bg-color);--font-face:"Fira Sans",sans-serif}:root.dark{--fg-color:var(--dark-fg-color);--bg-color:var(--dark-bg-color);--link-color:var(--dark-link-color);--highlight-fg-color:var(--dark-highlight-fg-color);--highlight-bg-color:var(--dark-highlight-bg-color)} + +/*! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=checkbox]:indeterminate,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root{--color-inherit:inherit;--color-current:currentColor;--color-transparent:#0000;--color-black:#000;--color-white:#fff;--color-slate-50:#f8fafc;--color-slate-100:#f1f5f9;--color-slate-200:#e2e8f0;--color-slate-300:#cbd5e1;--color-slate-400:#94a3b8;--color-slate-500:#64748b;--color-slate-600:#475569;--color-slate-700:#334155;--color-slate-800:#1e293b;--color-slate-900:#0f172a;--color-slate-950:#020617;--color-gray-50:#f9fafb;--color-gray-100:#f3f4f6;--color-gray-200:#e5e7eb;--color-gray-300:#d1d5db;--color-gray-400:#9ca3af;--color-gray-500:#6b7280;--color-gray-600:#4b5563;--color-gray-700:#374151;--color-gray-800:#1f2937;--color-gray-900:#111827;--color-gray-950:#030712;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-200:#e4e4e7;--color-zinc-300:#d4d4d8;--color-zinc-400:#a1a1aa;--color-zinc-500:#71717a;--color-zinc-600:#52525b;--color-zinc-700:#3f3f46;--color-zinc-800:#27272a;--color-zinc-900:#18181b;--color-zinc-950:#09090b;--color-neutral-50:#fafafa;--color-neutral-100:#f5f5f5;--color-neutral-200:#e5e5e5;--color-neutral-300:#d4d4d4;--color-neutral-400:#a3a3a3;--color-neutral-500:#737373;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#262626;--color-neutral-900:#171717;--color-neutral-950:#0a0a0a;--color-stone-50:#fafaf9;--color-stone-100:#f5f5f4;--color-stone-200:#e7e5e4;--color-stone-300:#d6d3d1;--color-stone-400:#a8a29e;--color-stone-500:#78716c;--color-stone-600:#57534e;--color-stone-700:#44403c;--color-stone-800:#292524;--color-stone-900:#1c1917;--color-stone-950:#0c0a09;--color-red-50:#fef2f2;--color-red-100:#fee2e2;--color-red-200:#fecaca;--color-red-300:#fca5a5;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-600:#dc2626;--color-red-700:#b91c1c;--color-red-800:#991b1b;--color-red-900:#7f1d1d;--color-red-950:#450a0a;--color-orange-50:#fff7ed;--color-orange-100:#ffedd5;--color-orange-200:#fed7aa;--color-orange-300:#fdba74;--color-orange-400:#fb923c;--color-orange-500:#f97316;--color-orange-600:#ea580c;--color-orange-700:#c2410c;--color-orange-800:#9a3412;--color-orange-900:#7c2d12;--color-orange-950:#431407;--color-amber-50:#fffbeb;--color-amber-100:#fef3c7;--color-amber-200:#fde68a;--color-amber-300:#fcd34d;--color-amber-400:#fbbf24;--color-amber-500:#f59e0b;--color-amber-600:#d97706;--color-amber-700:#b45309;--color-amber-800:#92400e;--color-amber-900:#78350f;--color-amber-950:#451a03;--color-yellow-50:#fefce8;--color-yellow-100:#fef9c3;--color-yellow-200:#fef08a;--color-yellow-300:#fde047;--color-yellow-400:#facc15;--color-yellow-500:#eab308;--color-yellow-600:#ca8a04;--color-yellow-700:#a16207;--color-yellow-800:#854d0e;--color-yellow-900:#713f12;--color-yellow-950:#422006;--color-lime-50:#f7fee7;--color-lime-100:#ecfccb;--color-lime-200:#d9f99d;--color-lime-300:#bef264;--color-lime-400:#a3e635;--color-lime-500:#84cc16;--color-lime-600:#65a30d;--color-lime-700:#4d7c0f;--color-lime-800:#3f6212;--color-lime-900:#365314;--color-lime-950:#1a2e05;--color-green-50:#f0fdf4;--color-green-100:#dcfce7;--color-green-200:#bbf7d0;--color-green-300:#86efac;--color-green-400:#4ade80;--color-green-500:#22c55e;--color-green-600:#16a34a;--color-green-700:#15803d;--color-green-800:#166534;--color-green-900:#14532d;--color-green-950:#052e16;--color-emerald-50:#ecfdf5;--color-emerald-100:#d1fae5;--color-emerald-200:#a7f3d0;--color-emerald-300:#6ee7b7;--color-emerald-400:#34d399;--color-emerald-500:#10b981;--color-emerald-600:#059669;--color-emerald-700:#047857;--color-emerald-800:#065f46;--color-emerald-900:#064e3b;--color-emerald-950:#022c22;--color-teal-50:#f0fdfa;--color-teal-100:#ccfbf1;--color-teal-200:#99f6e4;--color-teal-300:#5eead4;--color-teal-400:#2dd4bf;--color-teal-500:#14b8a6;--color-teal-600:#0d9488;--color-teal-700:#0f766e;--color-teal-800:#115e59;--color-teal-900:#134e4a;--color-teal-950:#042f2e;--color-cyan-50:#ecfeff;--color-cyan-100:#cffafe;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#22d3ee;--color-cyan-500:#06b6d4;--color-cyan-600:#0891b2;--color-cyan-700:#0e7490;--color-cyan-800:#155e75;--color-cyan-900:#164e63;--color-cyan-950:#083344;--color-sky-50:#f0f9ff;--color-sky-100:#e0f2fe;--color-sky-200:#bae6fd;--color-sky-300:#7dd3fc;--color-sky-400:#38bdf8;--color-sky-500:#0ea5e9;--color-sky-600:#0284c7;--color-sky-700:#0369a1;--color-sky-800:#075985;--color-sky-900:#0c4a6e;--color-sky-950:#082f49;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bfdbfe;--color-blue-300:#93c5fd;--color-blue-400:#60a5fa;--color-blue-500:#3b82f6;--color-blue-600:#2563eb;--color-blue-700:#1d4ed8;--color-blue-800:#1e40af;--color-blue-900:#1e3a8a;--color-blue-950:#172554;--color-indigo-50:#eef2ff;--color-indigo-100:#e0e7ff;--color-indigo-200:#c7d2fe;--color-indigo-300:#a5b4fc;--color-indigo-400:#818cf8;--color-indigo-500:#6366f1;--color-indigo-600:#4f46e5;--color-indigo-700:#4338ca;--color-indigo-800:#3730a3;--color-indigo-900:#312e81;--color-indigo-950:#1e1b4b;--color-violet-50:#f5f3ff;--color-violet-100:#ede9fe;--color-violet-200:#ddd6fe;--color-violet-300:#c4b5fd;--color-violet-400:#a78bfa;--color-violet-500:#8b5cf6;--color-violet-600:#7c3aed;--color-violet-700:#6d28d9;--color-violet-800:#5b21b6;--color-violet-900:#4c1d95;--color-violet-950:#2e1065;--color-purple-50:#faf5ff;--color-purple-100:#f3e8ff;--color-purple-200:#e9d5ff;--color-purple-300:#d8b4fe;--color-purple-400:#c084fc;--color-purple-500:#a855f7;--color-purple-600:#9333ea;--color-purple-700:#7e22ce;--color-purple-800:#6b21a8;--color-purple-900:#581c87;--color-purple-950:#3b0764;--color-fuchsia-50:#fdf4ff;--color-fuchsia-100:#fae8ff;--color-fuchsia-200:#f5d0fe;--color-fuchsia-300:#f0abfc;--color-fuchsia-400:#e879f9;--color-fuchsia-500:#d946ef;--color-fuchsia-600:#c026d3;--color-fuchsia-700:#a21caf;--color-fuchsia-800:#86198f;--color-fuchsia-900:#701a75;--color-fuchsia-950:#4a044e;--color-pink-50:#fdf2f8;--color-pink-100:#fce7f3;--color-pink-200:#fbcfe8;--color-pink-300:#f9a8d4;--color-pink-400:#f472b6;--color-pink-500:#ec4899;--color-pink-600:#db2777;--color-pink-700:#be185d;--color-pink-800:#9d174d;--color-pink-900:#831843;--color-pink-950:#500724;--color-rose-50:#fff1f2;--color-rose-100:#ffe4e6;--color-rose-200:#fecdd3;--color-rose-300:#fda4af;--color-rose-400:#fb7185;--color-rose-500:#f43f5e;--color-rose-600:#e11d48;--color-rose-700:#be123c;--color-rose-800:#9f1239;--color-rose-900:#881337;--color-rose-950:#4c0519;--color-axo-pink:#ff75c3;--color-axo-pink-dark:#cc5c9b;--color-axo-orange:#f57070;--color-axo-orange-dark:#e85e68;--color-axo-highlighter:#ffd900;--color-axo-black:#141414;--color-axo-light-gray:#ededed;--color-axo-dark-gray:#595959}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }body,html{font-family:var(--font-face);height:100%;scroll-behavior:smooth}.container{display:flex;flex-direction:column;min-height:100%}.page-body{flex-grow:1}:focus{outline-offset:4px;outline-style:solid;outline-width:2px}body{background-color:var(--bg-color);color:var(--fg-color)}a{color:var(--link-color)}a:hover{text-decoration-line:underline;text-underline-offset:4px}.title{font-size:3.75rem;line-height:1;padding-bottom:.5rem;text-align:center}@media (min-width:640px){.title{font-size:6rem;line-height:1}}h1{font-size:1.875rem;font-weight:900;line-height:2.25rem;line-height:1.25;margin-bottom:2rem}@media (min-width:640px){h1{font-size:3.75rem;line-height:1}}h2{font-size:1.5rem;font-weight:700;line-height:2rem;line-height:1.25;margin-bottom:1.5rem}@media (min-width:640px){h2{font-size:3rem;line-height:1}}h2,h3{margin-top:3rem}@media (min-width:640px){h2,h3{margin-top:6rem}}h3{font-size:1.5rem;font-weight:700;line-height:2rem;line-height:1.25;margin-bottom:1rem}@media (min-width:640px){h3{font-size:2.25rem;line-height:2.5rem}}h4{font-size:1.5rem;line-height:2rem;line-height:1.25;margin-bottom:1rem}@media (min-width:640px){h4{font-size:1.875rem;line-height:2.25rem}}h5{color:rgb(51 65 85/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem;line-height:1.25;margin-bottom:1rem}:is(.dark h5),h5{--tw-text-opacity:1}:is(.dark h5){color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){h5{font-size:1.5rem;line-height:2rem}}h6{color:rgb(30 41 59/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem;line-height:1.25;margin-bottom:1rem}:is(.dark h6),h6{--tw-text-opacity:1}:is(.dark h6){color:rgb(203 213 225/var(--tw-text-opacity))}@media (min-width:640px){h6{font-size:1.25rem;line-height:1.75rem}}p,table{font-size:1rem;line-height:1.5rem;line-height:1.625;margin-bottom:2rem}@media (min-width:640px){p,table{font-size:1.125rem;line-height:1.75rem}}b,li{font-size:1rem;line-height:1.5rem;line-height:1.625}@media (min-width:640px){b,li{font-size:1.125rem;line-height:1.75rem}}table{margin-bottom:4rem;margin-top:4rem}table th{padding:1rem;text-align:left;text-transform:uppercase}table td{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;padding:1rem;vertical-align:top}table td,table td>code{font-size:.875rem;line-height:1.25rem}table tbody tr{border-color:var(--fg-color);border-top-width:1px}div.table{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:4rem;margin-top:4rem;width:100%}div.table .th{font-size:1.125rem;font-weight:700;line-height:1.75rem;text-align:left;text-transform:uppercase}div.table .th,div.table span:not(.th){border-color:var(--fg-color);border-top-width:1px;padding:1rem}div.table span:not(.th){font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}li,ul{list-style-type:none}.rendered-markdown li,.rendered-markdown ul{list-style-type:disc}li{margin-bottom:1rem;margin-left:1rem}@media (min-width:640px){li{margin-left:2rem}}code{font-size:1rem;line-height:1.5rem;line-height:1.625;margin-bottom:1rem;white-space:pre-wrap}@media (min-width:640px){code{font-size:1.125rem;line-height:1.75rem}}code{color:var(--link-color)}div.table code{font-size:.875rem;line-height:1.25rem}h1 code,h2 code,h3 code,h4 code,h5 code,h6 code{font-size:inherit;line-height:inherit}pre{margin-bottom:4rem;margin-top:4rem;overflow:auto;padding:1rem}pre>code{font-size:.75rem;line-height:1rem}@media (min-width:640px){pre>code{font-size:1rem;line-height:1.5rem}}hr{border-style:dashed;border-width:1px;margin:5rem auto;text-align:center;width:16rem}@media (min-width:768px){hr{width:24rem}}img{display:inline}p>img:only-child{display:block;margin:auto}blockquote{border-color:var(--link-color);border-left-width:2px;font-size:1.5rem;line-height:2rem;padding-left:1.5rem}main{margin:6rem auto;max-width:80%}@media (min-width:1024px){main{max-width:56rem}}.github-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E");height:1.25rem;width:1.25rem}.dark .github-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23141414' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.dark .artifacts,.light .artifacts{padding:2rem}.logo{display:block;margin:auto;max-width:20rem}.inline-code{text-align:center;word-break:break-all}.oblique{font-style:oblique}.well-color{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.oranda-hide{display:none}.heading-1{font-size:1.875rem;font-weight:900;line-height:2.25rem;line-height:1.25;margin-bottom:2rem}@media (min-width:640px){.heading-1{font-size:3.75rem;line-height:1}}.heading-2{font-size:1.5rem;font-weight:700;line-height:2rem;line-height:1.25;margin-bottom:1.5rem}@media (min-width:640px){.heading-2{font-size:3rem;line-height:1}}.heading-3{font-size:1.5rem;font-weight:700;line-height:2rem;line-height:1.25;margin-bottom:1rem}@media (min-width:640px){.heading-3{font-size:2.25rem;line-height:2.5rem}}.heading-4{font-size:1.5rem;line-height:2rem;line-height:1.25;margin-bottom:1rem}@media (min-width:640px){.heading-4{font-size:1.875rem;line-height:2.25rem}}.heading-5{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem;line-height:1.25;margin-bottom:1rem}:is(.dark .heading-5){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){.heading-5{font-size:1.5rem;line-height:2rem}}.heading-6{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem;line-height:1.25;margin-bottom:1rem}:is(.dark .heading-6){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}@media (min-width:640px){.heading-6{font-size:1.25rem;line-height:1.75rem}}.hidden{display:none}.button{border-radius:.25rem;border-width:2px;cursor:pointer;font-size:1.125rem;line-height:1.75rem;min-width:-moz-max-content;min-width:max-content;padding:.75rem;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:10rem}.button:disabled{cursor:default;opacity:.6}.button.primary{border-color:#0000}.button.primary,.button.secondary{background-color:var(--bg-color);color:var(--fg-color)}.button.secondary{border-color:var(--fg-color)}.button.secondary:hover{background-color:var(--fg-color);border-color:var(--bg-color);color:var(--bg-color)}select{background-color:var(--bg-color);color:var(--fg-color)}footer{align-items:center;background-color:var(--fg-color);color:var(--bg-color);display:flex;flex-grow:0;flex-shrink:1;font-size:.75rem;justify-content:space-between;line-height:1rem;padding:.5rem 1rem;width:100%}.nav{margin-bottom:3rem}.nav,.nav ul{padding:0;text-align:center}.nav ul{align-items:center;display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:center;list-style-type:none}.nav ul li{margin:0;text-transform:capitalize}.repo_banner{background-color:var(--fg-color);color:var(--bg-color);padding-bottom:.375rem;padding-top:.375rem}.repo_banner>a{align-items:flex-start;display:flex;gap:.5rem;height:20px;justify-content:center}.repo_banner>a,.repo_banner>a:hover{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.repo_banner>a:hover{text-decoration-color:#f8fafc;text-decoration-line:underline;text-underline-offset:1px}:is(.dark .repo_banner>a){color:#141414}:is(.dark .repo_banner>a:hover){color:#141414;text-decoration-color:#141414}.funding-wrapper{align-items:center;display:flex;flex-direction:column;margin-top:2rem}.funding-list{gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:3rem;margin-top:3rem;width:100%}@media (min-width:1024px){.funding-list{display:grid}}.funding-list li{margin:0 0 1rem}.funding-list li a{align-items:center;display:flex;gap:.5rem}.funding-list li a:hover button{--tw-text-opacity:1;background-color:#e85e68;background-color:var(--fg-color);border-color:#e85e68;border-color:var(--bg-color);color:rgb(241 245 249/var(--tw-text-opacity));color:var(--bg-color)}.funding-list .button{display:block;margin-right:.5rem;width:auto}.preferred-funding-list{grid-template-columns:repeat(1,minmax(0,1fr))}.preferred-funding-list li a{flex-direction:column;font-size:2.25rem;font-weight:700;line-height:2.5rem}.preferred-funding-list svg{height:3rem;width:3rem}.preferred-funding-list .button{border-width:0}.package-managers-downloads ul{margin-bottom:4rem;margin-top:4rem}.package-managers-downloads ul li{margin-left:0}.package-managers-downloads pre{margin-bottom:0;margin-top:0}.artifacts{align-items:center;display:none;flex-direction:column;margin-bottom:2rem;padding:0}@media (min-width:640px){.artifacts{display:flex}}.artifacts{background-color:var(--highlight-bg-color);color:var(--highlight-fg-color)}.artifacts-table{display:block;max-width:100%;overflow:auto}ul.tabs{border-bottom-width:2px;border-color:var(--highlight-fg-color);display:flex}ul.tabs li{font-size:1rem;line-height:1.5rem;margin:0;padding:.5rem .75rem}ul.tabs li:hover{cursor:pointer}ul.tabs li.selected{background-color:var(--highlight-fg-color);color:var(--highlight-bg-color)}.install-content{margin:0;max-width:100%;padding:0}.detect{padding-right:.5rem;text-align:center}@media (min-width:768px){.detect{padding-right:0}}.detect+a{display:block;margin-bottom:.5rem;margin-top:.5rem}@media (min-width:640px){.detect+a{display:inline;margin-bottom:0;margin-top:0}}.detect .detected-os{text-transform:capitalize}.artifact-header pre{margin:0 auto}.artifact-header>h4{font-weight:700;margin-bottom:-.5rem;text-align:center}.artifact-header{max-width:100%;width:100%}.artifact-header>div:not(.install-code-wrapper){align-items:center;justify-content:center;margin-top:1rem;text-align:center}@media (min-width:768px){.artifact-header>div:not(.install-code-wrapper){display:flex;gap:1rem;text-align:left}}.backup-download:hover{text-decoration-line:none}.bottom-options{align-items:center;display:flex;flex-direction:row;justify-content:space-between;width:100%}.bottom-options.one{justify-content:center}.install-code-wrapper{align-items:stretch;display:flex}.install-code-wrapper>pre{flex-grow:1;flex-shrink:1}.install-code-wrapper>.button{align-items:center;border-bottom-left-radius:0;border-top-left-radius:0;display:flex;width:auto}.install-code-wrapper>.button:hover{text-decoration-line:none}.install-code-wrapper>.button:focus{outline-offset:-2px}.install-code-wrapper>.button.copy-clipboard-button{border-radius:0}.download-wrapper{display:flex;flex-direction:row;justify-content:center}.button .button-subtitle{display:block;font-size:.75rem;line-height:1rem}.published-date{display:block;margin-bottom:.5rem}.arch{margin:0;padding:1rem 0 0}.arch .contents{min-height:7rem;padding-top:1rem}.mobile-download{display:block;margin-bottom:3rem;margin-left:auto;margin-right:auto}@media (min-width:640px){.mobile-download{display:none}}.install-code-wrapper>.button svg{height:1.5rem;width:1.5rem}.release-body{word-break:break-word}.release-body h1{font-size:1.5rem;font-weight:700;line-height:2rem;line-height:1.25;margin-bottom:1.5rem;margin-top:3rem}@media (min-width:640px){.release-body h1{font-size:3rem;line-height:1}}.release-body h2{font-size:1.5rem;font-weight:700;line-height:2rem;line-height:1.25;margin-bottom:1rem;margin-top:3rem}@media (min-width:640px){.release-body h2{font-size:2.25rem;line-height:2.5rem}}.release-body h3{font-size:1.5rem;line-height:2rem;line-height:1.25;margin-bottom:1rem}@media (min-width:640px){.release-body h3{font-size:1.875rem;line-height:2.25rem}}.release-body h4{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem;line-height:1.25;margin-bottom:1rem}:is(.dark .release-body h4){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}@media (min-width:640px){.release-body h4{font-size:1.5rem;line-height:2rem}}.release-body h5{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem;line-height:1.25;margin-bottom:1rem}:is(.dark .release-body h5){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}@media (min-width:640px){.release-body h5{font-size:1.25rem;line-height:1.75rem}}.release-body li,.release-body ul{list-style-type:disc}.releases-nav{align-self:flex-start;position:sticky;top:3rem;width:-moz-max-content;width:max-content}.release>h2{margin-top:0}.release>h2 a{color:var(--fg-color)}.releases-list{display:flex;flex-direction:column;gap:8rem}.releases-wrapper{display:grid;gap:3rem;grid-template-columns:160px minmax(0,1fr);margin-top:3rem;position:relative}.releases-nav ul{border-color:var(--fg-color);border-left-width:4px;display:flex;flex-direction:column;gap:.5rem;list-style-type:none;margin:0;padding-left:1rem}.releases-nav ul li{font-size:.875rem;line-height:1.25rem;margin:0 0 0 .25rem;position:relative}.releases-nav ul li:before{--tw-translate-y:-50%;background-color:var(--fg-color);content:"";display:block;height:.25rem;left:-1.25rem;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:1rem}.releases-nav ul li a{text-decoration-color:#0000;text-underline-offset:2px}.releases-nav ul li a:hover{text-decoration-line:underline}.releases-nav ul li a{color:var(--fg-color)}.release-info{font-size:1rem;gap:2rem;line-height:1.5rem}.prereleases-toggle,.release-info{align-items:center;display:flex}.prereleases-toggle{margin-bottom:1.5rem;position:relative;width:-moz-max-content;width:max-content}.prereleases-toggle input{border-radius:.25rem;color:var(--fg-color);height:1.25rem;width:1.25rem}.prereleases-toggle label{font-weight:500;margin-left:.75rem}.release-info svg{height:1.5rem;width:1.5rem}.release-info>span{align-items:center;display:flex;gap:.5rem}ul.index-grid{align-items:stretch;display:grid;gap:2rem;margin-top:4rem}@media (min-width:768px){ul.index-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){ul.index-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.index-grid li{border-color:var(--bg-color);border-radius:.25rem;border-width:1px;box-shadow:0 0 0 8px #0000004d;flex-direction:column;margin-left:0}.index-grid .content,.index-grid li{display:flex;justify-content:space-between}.index-grid .content{padding:1rem}.index-grid .links{display:flex;width:100%}.index-grid .links>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.index-grid .links{border-top-width:1px}.index-grid .links a{align-items:center;display:inline-flex;width:50%}.index-grid .links a>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.index-grid .links a{padding:1rem 1.5rem}.index-grid .content .index-logo{flex-shrink:0;height:5rem;position:relative;width:5rem}.index-grid li.preferred{grid-column:span 2/span 2}.index-about h2{margin-top:0}html.axo{--highlight-color:#a78bfa;--axo-orange-color:#f57070;--axo-pink-color:#ff75c3;--light-fg-color:#141414;--light-link-color:var(--axo-pink-color);--dark-link-color:var(--axo-pink-color);--light-highlight-bg-color:var(--light-bg-color);--light-highlight-fg-color:var(--light-fg-color);--dark-highlight-bg-color:var(--light-fg-color);--dark-highlight-fg-color:var(--light-bg-color);--font-face:"Comfortaa",sans-serif}code,h1,h2,h3{color:var(--highlight-color)}html.axo .button.primary{background-color:var(--link-color)}html.axo .repo_banner,html.axo footer{animation-duration:3s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:animation-gradient-title;background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px}@media (prefers-reduced-motion){html.axo .repo_banner,html.axo footer{animation-duration:0s}}html.hacker html.axo .repo_banner,html.hacker html.axo footer{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.cupcake html.axo .repo_banner,html.cupcake html.axo footer{background:var(--secondary)}html.axo h1.title{-webkit-text-fill-color:#0000;animation-duration:3s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:animation-gradient-title;background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px}@media (prefers-reduced-motion){html.axo h1.title{animation-duration:0s}}html.hacker html.axo h1.title{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.cupcake html.axo h1.title{background:var(--secondary)}html.axo h1.title{-webkit-background-clip:text;background-clip:text}.axo-gradient{animation-duration:3s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:animation-gradient-title;background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px}.text-fill-transparent{-webkit-text-fill-color:#0000}.axo-gradient-text{-webkit-text-fill-color:#0000;animation-duration:3s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:animation-gradient-title;background:-webkit-linear-gradient(left,var(--axo-orange-color),var(--axo-pink-color),var(--axo-orange-color));background-size:1600px 200px}@media (prefers-reduced-motion){.axo-gradient-text{animation-duration:0s}}html.hacker .axo-gradient-text{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.cupcake .axo-gradient-text{background:var(--secondary)}.axo-gradient-text{-webkit-background-clip:text;background-clip:text}@media (prefers-reduced-motion){.axo-gradient{animation-duration:0s}}@keyframes slide-in{0%{top:-100vh}to{top:0}}@keyframes animation-gradient-title{0%{background-position:0 1600px}to{background-position:1600px 0}}html.hacker{--light-highlight-bg-color:var(--dark-highlight-bg-color);--light-highlight-fg-color:var(--dark-highlight-fg-color);--hacker-green:#20c20e}html.hacker ::-moz-selection{background-color:#20c20e;color:#141414}html.hacker ::selection{background-color:#20c20e;color:#141414}html.hacker body{--tw-text-opacity:1;background-color:#141414;font-family:IBM Plex Mono,monospace}html.hacker .button.secondary,html.hacker body{color:rgb(203 213 225/var(--tw-text-opacity))}html.hacker .button.secondary{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}html.hacker .button.secondary:hover{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity));color:#141414}html.hacker h2,html.hacker h3,html.hacker h4,html.hacker h5,html.hacker h6{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}html.hacker .repo_banner>a,html.hacker footer{color:var(--light-color);padding-bottom:.5rem;padding-top:.5rem}html.hacker p,html.hacker table{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}html.hacker .title{display:inline-block;margin-left:2rem;position:relative;text-align:left}@keyframes blink-animation{to{visibility:hidden}}html.hacker .title:after{animation:blink-animation 1s steps(5,start) infinite;background:var(--hacker-green);content:"";display:block;height:70px;left:100%;margin-left:.75rem;position:absolute;top:.75rem;width:1rem}html.hacker .title:before{--tw-translate-y:-50%;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity));content:"> ";display:block;font-size:3rem;left:-2rem;line-height:1;margin-top:.5rem;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}html.hacker .title,html.hacker div.table .th,html.hacker h1{color:var(--hacker-green)}html.hacker a{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}html.hacker a:hover{text-decoration-color:#f97316}html.hacker .axo-gradient{background:-webkit-linear-gradient(left,var(--hacker-green),var(--color-green-600),var(--hacker-green))}html.hacker .nav ul{justify-content:flex-start}html.hacker .button.primary{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity));border-color:#0000;color:#141414}html.hacker .button.primary:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}html.hacker .artifact-header>h4{color:var(--light-color);text-align:left}html.hacker .releases-nav ul li a{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}html.hacker .releases-nav ul li:before{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}html.hacker .releases-nav ul{--tw-border-opacity:1;border-left-color:rgb(75 85 99/var(--tw-border-opacity))}html.hacker .prereleases-toggle input:checked{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}html.hacker .releases-nav ul li a:hover{text-decoration-color:#f97316}html.hacker .funding-wrapper{align-items:flex-start}html.hacker .artifacts{padding:2rem}html.hacker .published-date{display:block;width:100%}html.hacker .logo{display:block;margin:0}html.cupcake body{--b1:#faf7f5;--b2:#dfaff7;--text:#291334cc;--links:#291334;--primary:#65c3c8;--secondary:#291334;--secondary-100:#210f2a;--code:#291334;background-color:var(--b1);color:var(--text);font-family:Inter,sans-serif}html.cupcake ::-moz-selection{-webkit-text-fill-color:var(--code);background-color:var(--b2);color:var(--code)}html.cupcake ::selection{-webkit-text-fill-color:var(--code);background-color:var(--b2);color:var(--code)}html.cupcake .button.primary{background:var(--secondary);border-color:#0000;color:var(--b2);text-decoration-line:none}html.cupcake .button.primary:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity));background:var(--secondary-100)}html.cupcake .button.secondary{border:1px solid var(--secondary);color:var(--secondary-100)}html.cupcake .button.secondary:hover{background:var(--secondary);color:var(--b2)}html.cupcake h1,html.cupcake h2,html.cupcake h3,html.cupcake h4,html.cupcake h5,html.cupcake h6,html.cupcake p,html.cupcake table{color:var(--text)}html.cupcake .title{color:var(--primary)}html.cupcake a{color:var(--links);font-weight:500;text-decoration-line:underline;text-underline-offset:4px}html.cupcake a:hover{color:var(--code);text-underline-offset:2px}html.cupcake .axo-gradient{background:var(--secondary)}html.cupcake .github-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23dfaff7' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}html.cupcake .repo_banner>a,html.cupcake footer{color:var(--b2);text-decoration:none}html.cupcake code{color:var(--code);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:500}html.cupcake .prereleases-toggle input:checked{background-color:var(--primary)}html.cupcake .artifacts{padding:2rem}html.cupcake .releases-nav ul li a{color:var(--links)}html.cupcake .releases-nav ul li:before{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}html.cupcake .releases-nav ul{--tw-border-opacity:1;border-left-color:rgb(209 213 219/var(--tw-border-opacity))}html.cupcake div.table .th{color:var(--primary)} \ No newline at end of file