1
0
mirror of https://github.com/rust-lang/rustlings.git synced 2024-09-18 11:31:35 +02:00

Deploying to gh-pages from @ rust-lang/rustlings@ea52c99560 🚀

This commit is contained in:
mo8it 2024-08-31 03:27:52 +00:00
commit 5d0e2741ab
35 changed files with 6444 additions and 0 deletions

1
CNAME Normal file
View File

@ -0,0 +1 @@
rustlings.cool

245
artifacts.js Normal file
View File

@ -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");
}
}
});
}

146
changelog/2.2.0/index.html Normal file
View File

@ -0,0 +1,146 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 2.2.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
2.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Feb 25 2020 at 22:09 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Update deps to version compatable with aarch64-pc-windows (#263) (<a href="https://github.com/rust-lang/rustlings/commit/19a93428b3c73d994292671f829bdc8e5b7b3401" rel="noopener noreferrer">19a93428</a>)</li>
<li><strong>docs:</strong>
<ul>
<li>Added a necessary step to Windows installation process (#242) (<a href="https://github.com/rust-lang/rustlings/commit/3906efcd52a004047b460ed548037093de3f523f" rel="noopener noreferrer">3906efcd</a>)</li>
<li>Fixed mangled sentence from book; edited for clarity (#266) (<a href="https://github.com/rust-lang/rustlings/commit/ade52ffb739987287ddd5705944c8777705faed9" rel="noopener noreferrer">ade52ff</a>)</li>
<li>Updated iterators readme to account for iterators4 exercise (#273) (<a href="https://github.com/rust-lang/rustlings/commit/bec8e3a644cbd88db1c73ea5f1d8a364f4a34016" rel="noopener noreferrer">bec8e3a</a>)</li>
</ul>
</li>
<li><strong>installation:</strong> make fatal errors more obvious (#272) (<a href="https://github.com/rust-lang/rustlings/commit/17d0951e66fda8e11b204d5c4c41a0d5e22e78f7" rel="noopener noreferrer">17d0951e</a>)</li>
<li><strong>iterators2:</strong>
<ul>
<li>Remove reference to missing iterators2.rs (#245) (<a href="https://github.com/rust-lang/rustlings/commit/419f7797f294e4ce6a2b883199731b5bde77d262" rel="noopener noreferrer">419f7797</a>)</li>
</ul>
</li>
<li><strong>as_ref_mut:</strong> Enable a test and improve per clippy's suggestion (#256) (<a href="https://github.com/rust-lang/rustlings/commit/dfdf8093ebbd4145864995627b812780de52f902" rel="noopener noreferrer">dfdf809</a>)</li>
<li><strong>tests1:</strong>
<ul>
<li>Change test command (<a href="https://github.com/rust-lang/rustlings/commit/fe10e06c3733ddb4a21e90d09bf79bfe618e97ce" rel="noopener noreferrer">fe10e06c</a></li>
<li>Correct test command in tests1.rs comment (#263) (<a href="https://github.com/rust-lang/rustlings/commit/39fa7ae8b70ad468da49b06f11b2383135a63bcf" rel="noopener noreferrer">39fa7ae</a>)</li>
</ul>
</li>
</ul>
<h4>Features</h4>
<ul>
<li>Add variables5.rs exercise (#264) (<a href="https://github.com/rust-lang/rustlings/commit/0c73609e6f2311295e95d6f96f8c747cfc4cba03" rel="noopener noreferrer">0c73609e</a>)</li>
<li>Show a completion message when watching (#253) (<a href="https://github.com/rust-lang/rustlings/commit/d25ee55a3205882d35782e370af855051b39c58c" rel="noopener noreferrer">d25ee55a</a>)</li>
<li>Add type conversion and parsing exercises (#249) (<a href="https://github.com/rust-lang/rustlings/commit/0c85dc1193978b5165491b99cc4922caf8d14a65" rel="noopener noreferrer">0c85dc11</a>)</li>
<li>Created consistent money unit (#258) (<a href="https://github.com/rust-lang/rustlings/commit/fd57f8f2c1da2af8ddbebbccec214e6f40f4dbab" rel="noopener noreferrer">fd57f8f</a>)</li>
<li>Enable test for exercise test4 (#276) (<a href="https://github.com/rust-lang/rustlings/commit/8b971ffab6079a706ac925f5917f987932b55c07" rel="noopener noreferrer">8b971ff</a>)</li>
<li>Added traits exercises (#274 but specifically #216, which originally added
this :heart:) (<a href="https://github.com/rust-lang/rustlings/commit/b559cdd73f32c0d0cfc1feda39f82b3e3583df17" rel="noopener noreferrer">b559cdd</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

111
changelog/2.2.1/index.html Normal file
View File

@ -0,0 +1,111 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 2.2.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
2.2.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Feb 27 2020 at 18:24 UTC
</span>
</div>
<div class="release-body">
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

145
changelog/3.0.0/index.html Normal file
View File

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 3.0.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
3.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 11 2020 at 22:04 UTC
</span>
</div>
<div class="release-body">
<h4>Breaking Changes</h4>
<ul>
<li>make "compile" exercises print output (#278) (<a href="https://github.com/fmoko/rustlings/commit/3b6d5c3aaa27a242a832799eb66e96897d26fde3" rel="noopener noreferrer">3b6d5c</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>primitive_types:</strong> revert primitive_types4 (#296) (<a href="https://github.com/rust-lang/rustlings/commit/b3a3351e8e6a0bdee07077d7b0382953821649ae" rel="noopener noreferrer">b3a3351e</a>)</li>
<li><strong>run:</strong> compile clippy exercise files (#295) (<a href="https://github.com/rust-lang/rustlings/commit/3ab084a421c0f140ae83bf1fc3f47b39342e7373" rel="noopener noreferrer">3ab084a4</a>)</li>
<li><strong>conversions:</strong>
<ul>
<li>add additional test to meet exercise rules (#284) (<a href="https://github.com/fmoko/rustlings/commit/bc22ec382f843347333ef1301fc1bad773657f38" rel="noopener noreferrer">bc22ec3</a>)</li>
<li>remove duplicate not done comment (#292) (<a href="https://github.com/fmoko/rustlings/commit/dab90f7b91a6000fe874e3d664f244048e5fa342" rel="noopener noreferrer">dab90f</a>)</li>
</ul>
</li>
<li>don't hardcode documentation version for traits (#288) (<a href="https://github.com/fmoko/rustlings/commit/30e6af60690c326fb5d3a9b7335f35c69c09137d" rel="noopener noreferrer">30e6af</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>add Option2 exercise (#290) (<a href="https://github.com/rust-lang/rustlings/commit/86b5c08b9bea1576127a7c5f599f5752072c087d" rel="noopener noreferrer">86b5c08b</a>)</li>
<li>add exercise for option (#282) (<a href="https://github.com/rust-lang/rustlings/commit/135e5d47a7c395aece6f6022117fb20c82f2d3d4" rel="noopener noreferrer">135e5d47</a>)</li>
<li>add new exercises for generics (#280) (<a href="https://github.com/rust-lang/rustlings/commit/76be5e4e991160f5fd9093f03ee2ba260e8f7229" rel="noopener noreferrer">76be5e4e</a>)</li>
<li><strong>ci:</strong> add buildkite config (<a href="https://github.com/rust-lang/rustlings/commit/b049fa2c84dba0f0c8906ac44e28fd45fba51a71" rel="noopener noreferrer">b049fa2c</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
<h3>2.2.1 (2020-02-27)</h3>
<h4>Bug Fixes</h4>
<ul>
<li>Re-add cloning the repo to install scripts (<a href="https://github.com/rust-lang/rustlings/commit/3d9b03c52b8dc51b140757f6fd25ad87b5782ef5" rel="noopener noreferrer">3d9b03c5</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Add clippy lints (#269) (<a href="https://github.com/rust-lang/rustlings/commit/1e2fd9c92f8cd6e389525ca1a999fca4c90b5921" rel="noopener noreferrer">1e2fd9c9</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

157
changelog/4.0.0/index.html Normal file
View File

@ -0,0 +1,157 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.0.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 8 2020 at 09:41 UTC
</span>
</div>
<div class="release-body">
<h4>Breaking Changes</h4>
<ul>
<li>Add a --nocapture option to display test harnesses' outputs (<a href="https://github.com/rust-lang/rustlings/commit/8ad5f9bf531a4848b1104b7b389a20171624c82f" rel="noopener noreferrer">8ad5f9bf</a>)</li>
<li>Rename test to quiz, fixes #244 (<a href="https://github.com/rust-lang/rustlings/commit/010a04569282149cea7f7a76fc4d7f4c9f0f08dd" rel="noopener noreferrer">010a0456</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Add traits README (<a href="https://github.com/rust-lang/rustlings/commit/173bb14140c5530cbdb59e53ace3991a99d804af" rel="noopener noreferrer">173bb141</a>)</li>
<li>Add box1.rs exercise (<a href="https://github.com/rust-lang/rustlings/commit/7479a4737bdcac347322ad0883ca528c8675e720" rel="noopener noreferrer">7479a473</a>)</li>
<li>Rewrite try_from_into (#393) (<a href="https://github.com/rust-lang/rustlings/commit/763aa6e378a586caae2d8d63755a85eeba227933" rel="noopener noreferrer">763aa6e3</a>)</li>
<li>Add if2 exercise (<a href="https://github.com/rust-lang/rustlings/commit/1da84b5f7c489f65bd683c244f13c7d1ee812df0" rel="noopener noreferrer">1da84b5f</a>)</li>
<li>Added exercise structs3.rs (<a href="https://github.com/rust-lang/rustlings/commit/b66e2e09622243e086a0f1258dd27e1a2d61c891" rel="noopener noreferrer">b66e2e09</a>)</li>
<li>Add exercise variables6 covering const (#352) (<a href="https://github.com/rust-lang/rustlings/commit/5999acd24a4f203292be36e0fd18d385887ec481" rel="noopener noreferrer">5999acd2</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>Change then to than (<a href="https://github.com/rust-lang/rustlings/commit/ddd98ad75d3668fbb10eff74374148aa5ed2344d" rel="noopener noreferrer">ddd98ad7</a>)</li>
<li>rename quiz1 to tests1 in info (#420) (<a href="https://github.com/rust-lang/rustlings/commit/0dd1c6ca6b389789e0972aa955fe17aa15c95f29" rel="noopener noreferrer">0dd1c6ca</a>)</li>
<li>fix quiz naming inconsistency (#421) (<a href="https://github.com/rust-lang/rustlings/commit/5563adbb890587fc48fbbc9c4028642687f1e85b" rel="noopener noreferrer">5563adbb</a>)</li>
<li>confine the user further in variable exercises (<a href="https://github.com/rust-lang/rustlings/commit/06ef4cc654e75d22a526812919ee49b8956280bf" rel="noopener noreferrer">06ef4cc6</a>)</li>
<li>update iterator and macro text for typos and clarity (<a href="https://github.com/rust-lang/rustlings/commit/959008284834bece0196a01e17ac69a7e3590116" rel="noopener noreferrer">95900828</a>)</li>
<li>update generics2 closes #362 (<a href="https://github.com/rust-lang/rustlings/commit/964c974a0274199d755073b917c2bc5da0c9b4f1" rel="noopener noreferrer">964c974a</a>)</li>
<li>confusing comment in conversions/try_from_into.rs (<a href="https://github.com/rust-lang/rustlings/commit/c9e4f2cfb4c48d0b7451263cfb43b9426438122d" rel="noopener noreferrer">c9e4f2cf</a>)</li>
<li><strong>arc1:</strong> Passively introduce attributes (#429) (<a href="https://github.com/rust-lang/rustlings/commit/113cdae2d4e4c55905e8056ad326ede7fd7de356" rel="noopener noreferrer">113cdae2</a>)</li>
<li><strong>box1:</strong> fix comment typo (#426) (<a href="https://github.com/rust-lang/rustlings/commit/bb2ca251106b27a7272d9a30872904dd1376654c" rel="noopener noreferrer">bb2ca251</a>)</li>
<li><strong>errorsn:</strong> Try harder to confine the user. (#388) (<a href="https://github.com/rust-lang/rustlings/commit/2b20c8a0f5774d07c58d110d75879f33fc6273b5" rel="noopener noreferrer">2b20c8a0</a>)</li>
<li><strong>from_into.rs:</strong> typo (<a href="https://github.com/rust-lang/rustlings/commit/a901499ededd3ce1995164700514fe4e9a0373ea" rel="noopener noreferrer">a901499e</a>)</li>
<li><strong>generics2:</strong> Guide students to the answer (#430) (<a href="https://github.com/rust-lang/rustlings/commit/e6bd8021d9a7dd06feebc30c9d5f953901d7b419" rel="noopener noreferrer">e6bd8021</a>)</li>
<li><strong>installation:</strong>
<ul>
<li>Provide a backup git reference when tag can't be curl (<a href="https://github.com/rust-lang/rustlings/commit/9e4fb1009f1c9e3433915c03e22c2af422e5c5fe" rel="noopener noreferrer">9e4fb100</a>)</li>
<li>Check if python is available while checking for git,rustc and cargo (<a href="https://github.com/rust-lang/rustlings/commit/9cfb617d5b0451b4b51644a1298965390cda9884" rel="noopener noreferrer">9cfb617d</a>)</li>
</ul>
</li>
<li><strong>option1:</strong>
<ul>
<li>Don't add only zeros to the numbers array (<a href="https://github.com/rust-lang/rustlings/commit/cce6a4427718724a9096800754cd3abeca6a1580" rel="noopener noreferrer">cce6a442</a>)</li>
<li>Add cast to usize, as it is confusing in the context of an exercise about Option (<a href="https://github.com/rust-lang/rustlings/commit/f6cffc7e487b42f15a6f958e49704c93a8d4465b" rel="noopener noreferrer">f6cffc7e</a>)</li>
</ul>
</li>
<li><strong>option2:</strong> Add TODO to comments (#400) (<a href="https://github.com/rust-lang/rustlings/commit/10967bce57682812dc0891a9f9757da1a9d87404" rel="noopener noreferrer">10967bce</a>)</li>
<li><strong>options1:</strong> Add hint about Array Initialization (#389) (<a href="https://github.com/rust-lang/rustlings/commit/9f75554f2a30295996f03f0160b98c0458305502" rel="noopener noreferrer">9f75554f</a>)</li>
<li><strong>test2:</strong> name of type String and &amp;str (#394) (<a href="https://github.com/rust-lang/rustlings/commit/d6c0a688e6a96f93ad60d540d4b326f342fc0d45" rel="noopener noreferrer">d6c0a688</a>)</li>
<li><strong>variables6:</strong> minor typo (#419) (<a href="https://github.com/rust-lang/rustlings/commit/524e17df10db95f7b90a0f75cc8997182a8a4094" rel="noopener noreferrer">524e17df</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

132
changelog/4.1.0/index.html Normal file
View File

@ -0,0 +1,132 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.1.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.1.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Oct 5 2020 at 16:45 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Update rustlings version in Cargo.lock (<a href="https://github.com/rust-lang/rustlings/commit/1cc40bc9ce95c23d56f6d91fa1c4deb646231fef" rel="noopener noreferrer">1cc40bc9</a>)</li>
<li><strong>arc1:</strong> index mod should equal thread count (<a href="https://github.com/rust-lang/rustlings/commit/b4062ef6993e80dac107c4093ea85166ad3ee0fa" rel="noopener noreferrer">b4062ef6</a>)</li>
<li><strong>enums3:</strong> Update Message::ChangeColor to take a tuple. (#457) (<a href="https://github.com/rust-lang/rustlings/commit/4b6540c71adabad647de8a09e57295e7c7c7d794" rel="noopener noreferrer">4b6540c7</a>)</li>
<li><strong>exercises:</strong> adding question mark to quiz2 (<a href="https://github.com/rust-lang/rustlings/commit/101072ab9f8c80b40b8b88cb06cbe38aca2481c5" rel="noopener noreferrer">101072ab</a>)</li>
<li><strong>generics3:</strong> clarify grade change (<a href="https://github.com/rust-lang/rustlings/commit/47f7672c0307732056e7426e81d351f0dd7e22e5" rel="noopener noreferrer">47f7672c</a>)</li>
<li><strong>structs3:</strong> Small adjustment of variable name (<a href="https://github.com/rust-lang/rustlings/commit/114b54cbdb977234b39e5f180d937c14c78bb8b2" rel="noopener noreferrer">114b54cb</a>)</li>
<li><strong>using_as:</strong> Add test so that proper type is returned. (#512) (<a href="https://github.com/rust-lang/rustlings/commit/3286c5ec19ea5fb7ded81d047da5f8594108a490" rel="noopener noreferrer">3286c5ec</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Added iterators1.rs exercise (<a href="https://github.com/rust-lang/rustlings/commit/9642f5a3f686270a4f8f6ba969919ddbbc4f7fdd" rel="noopener noreferrer">9642f5a3</a>)</li>
<li>Add ability to run rustlings on repl.it (#471) (<a href="https://github.com/rust-lang/rustlings/commit/8f7b5bd00eb83542b959830ef55192d2d76db90a" rel="noopener noreferrer">8f7b5bd0</a>)</li>
<li>Add gitpod support (#473) (<a href="https://github.com/rust-lang/rustlings/commit/4821a8be94af4f669042a06ab917934cfacd032f" rel="noopener noreferrer">4821a8be</a>)</li>
<li>Remind the user of the hint option (#425) (<a href="https://github.com/rust-lang/rustlings/commit/816b1f5e85d6cc6e72673813a85d0ada2a8f84af" rel="noopener noreferrer">816b1f5e</a>)</li>
<li>Remind the user of the hint option (#425) (<a href="https://github.com/rust-lang/rustlings/commit/9f61db5dbe38538cf06571fcdd5f806e7901e83a" rel="noopener noreferrer">9f61db5d</a>)</li>
<li><strong>cli:</strong> Added 'cls' command to 'watch' mode (#474) (<a href="https://github.com/rust-lang/rustlings/commit/4f2468e14f574a93a2e9b688367b5752ed96ae7b" rel="noopener noreferrer">4f2468e1</a>)</li>
<li><strong>try_from_into:</strong> Add insufficient length test (#469) (<a href="https://github.com/rust-lang/rustlings/commit/523d18b873a319f7c09262f44bd40e2fab1830e5" rel="noopener noreferrer">523d18b8</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

133
changelog/4.2.0/index.html Normal file
View File

@ -0,0 +1,133 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.2.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Nov 7 2020 at 13:22 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Add HashMap exercises (<a href="https://github.com/rust-lang/rustlings/commit/633c00cf8071e1e82959a3010452a32f34f29fc9" rel="noopener noreferrer">633c00cf</a>)</li>
<li>Add Vec exercises (<a href="https://github.com/rust-lang/rustlings/commit/0c12fa31c57c03c6287458a0a8aca7afd057baf6" rel="noopener noreferrer">0c12fa31</a>)</li>
<li><strong>primitive_types6:</strong> Add a test (#548) (<a href="https://github.com/rust-lang/rustlings/commit/2b1fb2b739bf9ad8d6b7b12af25fee173011bfc4" rel="noopener noreferrer">2b1fb2b7</a>)</li>
<li><strong>try_from_into:</strong> Add tests (#571) (<a href="https://github.com/rust-lang/rustlings/commit/95ccd92616ae79ba287cce221101e0bbe4f68cdc" rel="noopener noreferrer">95ccd926</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>log error output when inotify limit is exceeded (<a href="https://github.com/rust-lang/rustlings/commit/d61b4e5a13b44d72d004082f523fa1b6b24c1aca" rel="noopener noreferrer">d61b4e5a</a>)</li>
<li>more unique temp_file (<a href="https://github.com/rust-lang/rustlings/commit/5643ef05bc81e4a840e9456f4406a769abbe1392" rel="noopener noreferrer">5643ef05</a>)</li>
<li><strong>installation:</strong> Update the MinRustVersion (<a href="https://github.com/rust-lang/rustlings/commit/21bfb2d4777429c87d8d3b5fbf0ce66006dcd034" rel="noopener noreferrer">21bfb2d4</a>)</li>
<li><strong>iterators2:</strong> Update description (#578) (<a href="https://github.com/rust-lang/rustlings/commit/197d3a3d8961b2465579218a6749b2b2cefa8ddd" rel="noopener noreferrer">197d3a3d</a>)</li>
<li><strong>primitive_types6:</strong>
<ul>
<li>remove 'unused doc comment' warning (<a href="https://github.com/rust-lang/rustlings/commit/472d8592d65c8275332a20dfc269e7ac0d41bc88" rel="noopener noreferrer">472d8592</a>)</li>
<li>missing comma in test (<a href="https://github.com/rust-lang/rustlings/commit/4fb230daf1251444fcf29e085cee222a91f8a37e" rel="noopener noreferrer">4fb230da</a>)</li>
</ul>
</li>
<li><strong>quiz3:</strong> Second test is for odd numbers, not even. (#553) (<a href="https://github.com/rust-lang/rustlings/commit/18e0bfef1de53071e353ba1ec5837002ff7290e6" rel="noopener noreferrer">18e0bfef</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

135
changelog/4.3.0/index.html Normal file
View File

@ -0,0 +1,135 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.3.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.3.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Dec 29 2020 at 10:41 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Rewrite default out text (<a href="https://github.com/rust-lang/rustlings/commit/44d39112ff122b29c9793fe52e605df1612c6490" rel="noopener noreferrer">44d39112</a>)</li>
<li>match exercise order to book chapters (#541) (<a href="https://github.com/rust-lang/rustlings/commit/033bf1198fc8bfce1b570e49da7cde010aa552e3" rel="noopener noreferrer">033bf119</a>)</li>
<li>Crab? (#586) (<a href="https://github.com/rust-lang/rustlings/commit/fa9f522b7f043d7ef73a39f003a9272dfe72c4f4" rel="noopener noreferrer">fa9f522b</a>)</li>
<li>add "rustlings list" command (<a href="https://github.com/rust-lang/rustlings/commit/838f9f30083d0b23fd67503dcf0fbeca498e6647" rel="noopener noreferrer">838f9f30</a>)</li>
<li><strong>try_from_into:</strong> remove duplicate annotation (<a href="https://github.com/rust-lang/rustlings/commit/04f1d079aa42a2f49af694bc92c67d731d31a53f" rel="noopener noreferrer">04f1d079</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>update structs README (<a href="https://github.com/rust-lang/rustlings/commit/bcf14cf677adb3a38a3ac3ca53f3c69f61153025" rel="noopener noreferrer">bcf14cf6</a>)</li>
<li>added missing exercises to info.toml (<a href="https://github.com/rust-lang/rustlings/commit/90cfb6ff28377531bfc34acb70547bdb13374f6b" rel="noopener noreferrer">90cfb6ff</a>)</li>
<li>gives a bit more context to magic number (<a href="https://github.com/rust-lang/rustlings/commit/30644c9a062b825c0ea89435dc59f0cad86b110e" rel="noopener noreferrer">30644c9a</a>)</li>
<li><strong>functions2:</strong> Change signature to trigger precise error message: (#605) (<a href="https://github.com/rust-lang/rustlings/commit/0ef95947cc30482e63a7045be6cc2fb6f6dcb4cc" rel="noopener noreferrer">0ef95947</a>)</li>
<li><strong>structs1:</strong> Adjust wording (#573) (<a href="https://github.com/rust-lang/rustlings/commit/9334783da31d821cc59174fbe8320df95828926c" rel="noopener noreferrer">9334783d</a>)</li>
<li><strong>try_from_into:</strong>
<ul>
<li>type error (<a href="https://github.com/rust-lang/rustlings/commit/4f4cfcf3c36c8718c7c170c9c3a6935e6ef0618c" rel="noopener noreferrer">4f4cfcf3</a>)</li>
<li>Update description (#584) (<a href="https://github.com/rust-lang/rustlings/commit/96347df9df294f01153b29d9ad4ba361f665c755" rel="noopener noreferrer">96347df9</a>)</li>
</ul>
</li>
<li><strong>vec1:</strong> Have test compare every element in a and v (<a href="https://github.com/rust-lang/rustlings/commit/9b6c629397b24b944f484f5b2bbd8144266b5695" rel="noopener noreferrer">9b6c6293</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

163
changelog/4.4.0/index.html Normal file
View File

@ -0,0 +1,163 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.4.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.4.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 24 2021 at 10:04 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Fix spelling error in main.rs (<a href="https://github.com/rust-lang/rustlings/commit/91ee27f22bd3797a9db57e5fd430801c170c5db8" rel="noopener noreferrer">91ee27f2</a>)</li>
<li>typo in default out text (<a href="https://github.com/rust-lang/rustlings/commit/644c49f1e04cbb24e95872b3a52b07d692ae3bc8" rel="noopener noreferrer">644c49f1</a>)</li>
<li><strong>collections:</strong> Naming exercises for vectors and hashmap (<a href="https://github.com/rust-lang/rustlings/commit/bef39b125961310b34b34871e480a82e82af4678" rel="noopener noreferrer">bef39b12</a>)</li>
<li><strong>from_str:</strong>
<ul>
<li>Correct typos (<a href="https://github.com/rust-lang/rustlings/commit/5f7c89f85db1f33da01911eaa479c3a2d4721678" rel="noopener noreferrer">5f7c89f8</a>)</li>
<li>test for error instead of unwrap/should_panic (<a href="https://github.com/rust-lang/rustlings/commit/15e71535f37cfaed36e22eb778728d186e2104ab" rel="noopener noreferrer">15e71535</a>)</li>
<li>use trait objects for from_str (<a href="https://github.com/rust-lang/rustlings/commit/c3e7b831786c9172ed8bd5d150f3c432f242fba9" rel="noopener noreferrer">c3e7b831</a>)</li>
</ul>
</li>
<li><strong>functions3:</strong> improve function argument type (#687) (<a href="https://github.com/rust-lang/rustlings/commit/a6509cc4d545d8825f01ddf7ee37823b372154dd" rel="noopener noreferrer">a6509cc4</a>)</li>
<li><strong>hashmap2:</strong> Update incorrect assertion (#660) (<a href="https://github.com/rust-lang/rustlings/commit/72aaa15e6ab4b72b3422f1c6356396e20a2a2bb8" rel="noopener noreferrer">72aaa15e</a>)</li>
<li><strong>info:</strong> Fix typo (#635) (<a href="https://github.com/rust-lang/rustlings/commit/cddc1e86e7ec744ee644cc774a4887b1a0ded3e8" rel="noopener noreferrer">cddc1e86</a>)</li>
<li><strong>iterators2:</strong> Moved errors out of tests. (<a href="https://github.com/rust-lang/rustlings/commit/baf4ba175ba6eb92989e3dd54ecbec4bedc9a863" rel="noopener noreferrer">baf4ba17</a>, closes <a href="https://github.com/rust-lang/rustlings/issues/359" rel="noopener noreferrer">#359</a>)</li>
<li><strong>iterators3:</strong> Enabled iterators3.rs to run without commented out tests. (<a href="https://github.com/rust-lang/rustlings/commit/c6712dfccd1a093e590ad22bbc4f49edc417dac0" rel="noopener noreferrer">c6712dfc</a>)</li>
<li><strong>main:</strong> Let find_exercise work with borrows (<a href="https://github.com/rust-lang/rustlings/commit/347f30bd867343c5ace1097e085a1f7e356553f7" rel="noopener noreferrer">347f30bd</a>)</li>
<li><strong>move_semantics4:</strong>
<ul>
<li>Remove redundant "instead" (#640) (<a href="https://github.com/rust-lang/rustlings/commit/cc266d7d80b91e79df3f61984f231b7f1587218e" rel="noopener noreferrer">cc266d7d</a>)</li>
<li>Small readbility improvement (#617) (<a href="https://github.com/rust-lang/rustlings/commit/10965920fbdf8a1efc85bed869e55a1787006404" rel="noopener noreferrer">10965920</a>)</li>
</ul>
</li>
<li><strong>option2:</strong> Rename uninformative variables (#675) (<a href="https://github.com/rust-lang/rustlings/commit/b4de6594380636817d13c2677ec6f472a964cf43" rel="noopener noreferrer">b4de6594</a>)</li>
<li><strong>quiz3:</strong> Force an answer to Q2 (#672) (<a href="https://github.com/rust-lang/rustlings/commit/0d894e6ff739943901e1ae8c904582e5c2f843bd" rel="noopener noreferrer">0d894e6f</a>)</li>
<li><strong>structs:</strong> Add 5.3 to structs/README (#652) (<a href="https://github.com/rust-lang/rustlings/commit/6bd791f2f44aa7f0ad926df767f6b1fa8f12a9a9" rel="noopener noreferrer">6bd791f2</a>)</li>
<li><strong>structs2:</strong> correct grammar in hint (#663) (<a href="https://github.com/rust-lang/rustlings/commit/ebdb66c7bfb6d687a14cc511a559a222e6fc5de4" rel="noopener noreferrer">ebdb66c7</a>)</li>
<li><strong>structs3:</strong>
<ul>
<li>reword heading comment (#664) (<a href="https://github.com/rust-lang/rustlings/commit/9f3e8c2dde645e5264c2d2200e68842b5f47bfa3" rel="noopener noreferrer">9f3e8c2d</a>)</li>
<li>add check to prevent naive implementation of is_international (<a href="https://github.com/rust-lang/rustlings/commit/05a753fe6333d36dbee5f68c21dec04eacdc75df" rel="noopener noreferrer">05a753fe</a>)</li>
</ul>
</li>
<li><strong>threads1:</strong> line number correction (<a href="https://github.com/rust-lang/rustlings/commit/7857b0a689b0847f48d8c14cbd1865e3b812d5ca" rel="noopener noreferrer">7857b0a6</a>)</li>
<li><strong>try_from_into:</strong> use trait objects (<a href="https://github.com/rust-lang/rustlings/commit/2e93a588e0abe8badb7eafafb9e7d073c2be5df8" rel="noopener noreferrer">2e93a588</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Replace clap with argh (<a href="https://github.com/rust-lang/rustlings/commit/7928122fcef9ca7834d988b1ec8ca0687478beeb" rel="noopener noreferrer">7928122f</a>)</li>
<li>Replace emojis when NO_EMOJI env variable present (<a href="https://github.com/rust-lang/rustlings/commit/8d62a9963708dbecd9312e8bcc4b47049c72d155" rel="noopener noreferrer">8d62a996</a>)</li>
<li>Added iterators5.rs exercise. (<a href="https://github.com/rust-lang/rustlings/commit/b29ea17ea94d1862114af2cf5ced0e09c197dc35" rel="noopener noreferrer">b29ea17e</a>)</li>
<li><strong>arc1:</strong> Add more details to description and hint (#710) (<a href="https://github.com/rust-lang/rustlings/commit/81be40448777fa338ebced3b0bfc1b32d6370313" rel="noopener noreferrer">81be4044</a>)</li>
<li><strong>cli:</strong> Improve the list command with options, and then some (<a href="https://github.com/rust-lang/rustlings/commit/8bbe4ff1385c5c169c90cd3ff9253f9a91daaf8e" rel="noopener noreferrer">8bbe4ff1</a>)</li>
<li><strong>list:</strong>
<ul>
<li>updated progress percentage (<a href="https://github.com/rust-lang/rustlings/commit/1c6f7e4b7b9b3bd36f4da2bb2b69c549cc8bd913" rel="noopener noreferrer">1c6f7e4b</a>)</li>
<li>added progress info (<a href="https://github.com/rust-lang/rustlings/commit/c0e3daacaf6850811df5bc57fa43e0f249d5cfa4" rel="noopener noreferrer">c0e3daac</a>)</li>
</ul>
</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

130
changelog/4.5.0/index.html Normal file
View File

@ -0,0 +1,130 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.5.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.5.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 7 2021 at 20:30 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Add move_semantics5 exercise. (#746) (<a href="https://github.com/rust-lang/rustlings/commit/399ab328d8d407265c09563aa4ef4534b2503ff2" rel="noopener noreferrer">399ab328</a>)</li>
<li><strong>cli:</strong> Add "next" to run the next unsolved exercise. (#785) (<a href="https://github.com/rust-lang/rustlings/commit/d20e413a68772cd493561f2651cf244e822b7ca5" rel="noopener noreferrer">d20e413a</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>rename result1 to errors4 (<a href="https://github.com/rust-lang/rustlings/commit/50ab289da6b9eb19a7486c341b00048c516b88c0" rel="noopener noreferrer">50ab289d</a>)</li>
<li>move_semantics5 hints (<a href="https://github.com/rust-lang/rustlings/commit/1b85828548f46f58b622b5e0c00f8c989f928807" rel="noopener noreferrer">1b858285</a>)</li>
<li>remove trailing whitespaces from iterators1 (<a href="https://github.com/rust-lang/rustlings/commit/4d4fa77459392acd3581c6068aa8be9a02de12fc" rel="noopener noreferrer">4d4fa774</a>)</li>
<li>add hints to generics1 and generics2 exercises (<a href="https://github.com/rust-lang/rustlings/commit/31457940846b3844d78d4a4d2b074bc8d6aaf1eb" rel="noopener noreferrer">31457940</a>)</li>
<li>remove trailing whitespace (<a href="https://github.com/rust-lang/rustlings/commit/d9b69bd1a0a7a99f2c0d80933ad2eea44c8c71b2" rel="noopener noreferrer">d9b69bd1</a>)</li>
<li><strong>installation:</strong> first PowerShell command (<a href="https://github.com/rust-lang/rustlings/commit/aa9a943ddf3ae260782e73c26bcc9db60e5894b6" rel="noopener noreferrer">aa9a943d</a>)</li>
<li><strong>iterators5:</strong> derive Clone, Copy (<a href="https://github.com/rust-lang/rustlings/commit/91fc9e3118f4af603c9911698cc2a234725cb032" rel="noopener noreferrer">91fc9e31</a>)</li>
<li><strong>quiz1:</strong> Updated question description (#794) (<a href="https://github.com/rust-lang/rustlings/commit/d876649616cc8a8dd5f539f8bc1a5434b960b1e9" rel="noopener noreferrer">d8766496</a>)</li>
<li><strong>try_from_into, from_str:</strong> hints for dyn Error (<a href="https://github.com/rust-lang/rustlings/commit/11d2cf0d604dee3f5023c17802d69438e69fa50e" rel="noopener noreferrer">11d2cf0d</a>)</li>
<li><strong>variables5:</strong> confine the answer further (<a href="https://github.com/rust-lang/rustlings/commit/48ffcbd2c4cc4d936c2c7480019190f179813cc5" rel="noopener noreferrer">48ffcbd2</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

135
changelog/4.6.0/index.html Normal file
View File

@ -0,0 +1,135 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.6.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.6.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 25 2021 at 09:27 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>add advanced_errs2 (<a href="https://github.com/rust-lang/rustlings/commit/abd6b70c72dc6426752ff41f09160b839e5c449e" rel="noopener noreferrer">abd6b70c</a>)</li>
<li>add advanced_errs1 (<a href="https://github.com/rust-lang/rustlings/commit/882d535ba8628d5e0b37e8664b3e2f26260b2671" rel="noopener noreferrer">882d535b</a>)</li>
<li>Add a farewell message when quitting <code>watch</code> (<a href="https://github.com/rust-lang/rustlings/commit/1caef0b43494c8b8cdd6c9260147e70d510f1aca" rel="noopener noreferrer">1caef0b4</a>)</li>
<li>add more watch commands (<a href="https://github.com/rust-lang/rustlings/commit/a7dc080b95e49146fbaafe6922a6de2f8cb1582a" rel="noopener noreferrer">a7dc080b</a>, closes <a href="https://github.com/rust-lang/rustlings/issues/842" rel="noopener noreferrer">#842</a>)</li>
<li><strong>modules:</strong> update exercises, add modules3 (#822) (<a href="https://github.com/rust-lang/rustlings/commit/dfd2fab4f33d1bf59e2e5ee03123c0c9a67a9481" rel="noopener noreferrer">dfd2fab4</a>)</li>
<li><strong>quiz1:</strong> add default function name in comment (#838) (<a href="https://github.com/rust-lang/rustlings/commit/0a11bad71402b5403143d642f439f57931278c07" rel="noopener noreferrer">0a11bad7</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>Correct small typo in exercises/conversions/from_str.rs (<a href="https://github.com/rust-lang/rustlings/commit/86cc85295ae36948963ae52882e285d7e3e29323" rel="noopener noreferrer">86cc8529</a>)</li>
<li><strong>cli:</strong> typo in exercise.rs (#848) (<a href="https://github.com/rust-lang/rustlings/commit/06d5c0973a3dffa3c6c6f70acb775d4c6630323c" rel="noopener noreferrer">06d5c097</a>)</li>
<li><strong>from_str, try_from_into:</strong> custom error types (<a href="https://github.com/rust-lang/rustlings/commit/2dc93caddad43821743e4903d89b355df58d7a49" rel="noopener noreferrer">2dc93cad</a>)</li>
<li><strong>modules2:</strong> fix typo (#835) (<a href="https://github.com/rust-lang/rustlings/commit/1c3beb0a59178c950dc05fe8ee2346b017429ae0" rel="noopener noreferrer">1c3beb0a</a>)</li>
<li><strong>move_semantics5:</strong>
<ul>
<li>change &amp;mut *y to &amp;mut x (#814) (<a href="https://github.com/rust-lang/rustlings/commit/d75759e829fdcd64ef071cf4b6eae2a011a7718b" rel="noopener noreferrer">d75759e8</a>)</li>
<li>Clarify instructions (<a href="https://github.com/rust-lang/rustlings/commit/df25684cb79f8413915e00b5efef29369849cef1" rel="noopener noreferrer">df25684c</a>)</li>
</ul>
</li>
<li><strong>quiz1:</strong> Fix inconsistent wording (#826) (<a href="https://github.com/rust-lang/rustlings/commit/03131a3d35d9842598150f9da817f7cc26e2669a" rel="noopener noreferrer">03131a3d</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

162
changelog/4.7.0/index.html Normal file
View File

@ -0,0 +1,162 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.7.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.7.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 14 2022 at 09:23 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Add move_semantics6.rs exercise (#908) (<a href="https://github.com/rust-lang/rustlings/commit/3f0e1303e0b3bf3fecc0baced3c8b8a37f83c184" rel="noopener noreferrer">3f0e1303</a>)</li>
<li><strong>intro:</strong> Add intro section. (<a href="https://github.com/rust-lang/rustlings/commit/21c9f44168394e08338fd470b5f49b1fd235986f" rel="noopener noreferrer">21c9f441</a>)</li>
<li>Include exercises folder in the project structure behind a feature, enabling rust-analyzer to work (#917) (<a href="https://github.com/rust-lang/rustlings/commit/179a75a68d03ac9518dec2297fb17f91a4fc506b" rel="noopener noreferrer">179a75a6</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>Fix a few spelling mistakes (<a href="https://github.com/rust-lang/rustlings/commit/1c0fe3cbcca85f90b3985985b8e265ee872a2ab2" rel="noopener noreferrer">1c0fe3cb</a>)</li>
<li><strong>cli:</strong>
<ul>
<li>Move long text strings into constants. (<a href="https://github.com/rust-lang/rustlings/commit/f78c48020830d7900dd8d81f355606581670446d" rel="noopener noreferrer">f78c4802</a>)</li>
<li>Replace <code>filter_map()</code> with <code>find_map()</code> (<a href="https://github.com/rust-lang/rustlings/commit/9b27e8d993ca20232fe38a412750c3f845a83b65" rel="noopener noreferrer">9b27e8d</a>)</li>
</ul>
</li>
<li><strong>clippy1:</strong>
<ul>
<li>Set clippy::float_cmp lint to deny (#907) (<a href="https://github.com/rust-lang/rustlings/commit/71a06044e6a96ff756dc31d7b0ed665ae4badb57" rel="noopener noreferrer">71a06044</a>)</li>
<li>Updated code to test correctness clippy lint with approx_constant lint rule (<a href="https://github.com/rust-lang/rustlings/commit/f2650de369810867d2763e935ac0963c32ec420e" rel="noopener noreferrer">f2650de3</a>)</li>
</ul>
</li>
<li><strong>errors1:</strong>
<ul>
<li>Add a comment to make the purpose more clear (#486) (<a href="https://github.com/rust-lang/rustlings/commit/cbcde345409c3e550112e449242848eaa3391bb6" rel="noopener noreferrer">cbcde345</a>)</li>
<li>Don't modify tests (#958) (<a href="https://github.com/rust-lang/rustlings/commit/60bb7cc3931d21d3986ad52b2b302e632a93831c" rel="noopener noreferrer">60bb7cc</a>)</li>
</ul>
</li>
<li><strong>errors6:</strong> Remove existing answer code (<a href="https://github.com/rust-lang/rustlings/commit/43d0623086edbc46fe896ba59c7afa22c3da9f7a" rel="noopener noreferrer">43d0623</a>)</li>
<li><strong>functions5:</strong> Remove wrong new line and small English improvements (#885) (<a href="https://github.com/rust-lang/rustlings/commit/8ef4869b264094e5a9b50452b4534823a9df19c3" rel="noopener noreferrer">8ef4869b</a>)</li>
<li><strong>install:</strong> protect path with whitespaces using quotes and stop at the first error (<a href="https://github.com/rust-lang/rustlings/commit/d114847f256c5f571c0b4c87e04b04bce3435509" rel="noopener noreferrer">d114847f</a>)</li>
<li><strong>intro1:</strong> Add compiler error explanation. (<a href="https://github.com/rust-lang/rustlings/commit/9b8de65525a5576b78cf0c8e4098cdd34296338f" rel="noopener noreferrer">9b8de655</a>)</li>
<li><strong>iterators1:</strong> reorder TODO steps (<a href="https://github.com/rust-lang/rustlings/commit/0bd7a0631a17a9d69af5746795a30efc9cf64e6e" rel="noopener noreferrer">0bd7a063</a>)</li>
<li><strong>move_semantics2:</strong> Add comment (<a href="https://github.com/rust-lang/rustlings/commit/89650f808af23a32c9a2c6d46592b77547a6a464" rel="noopener noreferrer">89650f80</a>)</li>
<li><strong>move_semantics5:</strong> correct typo (#857) (<a href="https://github.com/rust-lang/rustlings/commit/46c28d5cef3d8446b5a356b19d8dbc725f91a3a0" rel="noopener noreferrer">46c28d5c</a>)</li>
<li><strong>quiz1:</strong> update to say quiz covers "If" (<a href="https://github.com/rust-lang/rustlings/commit/1622e8c198d89739765c915203efff0091bdeb78" rel="noopener noreferrer">1622e8c1</a>)</li>
<li><strong>structs3:</strong>
<ul>
<li>Add a hint for panic (#608) (<a href="https://github.com/rust-lang/rustlings/commit/4f7ff5d9c7b2d8b045194c1a9469d37e30257c4a" rel="noopener noreferrer">4f7ff5d9</a>)</li>
<li>remove redundant 'return' (#852) (<a href="https://github.com/rust-lang/rustlings/commit/bf33829da240375d086f96267fc2e02fa6b07001" rel="noopener noreferrer">bf33829d</a>)</li>
<li>Assigned value to <code>cents_per_gram</code> in test (<a href="https://github.com/rust-lang/rustlings/commit/d1ee2daf14f19105e6db3f9c610f44293d688532" rel="noopener noreferrer">d1ee2da</a>)</li>
</ul>
</li>
<li><strong>structs3.rs:</strong> assigned value to cents_per_gram in test (<a href="https://github.com/rust-lang/rustlings/commit/d1ee2daf14f19105e6db3f9c610f44293d688532" rel="noopener noreferrer">d1ee2daf</a>)</li>
<li><strong>traits1:</strong> rename test functions to snake case (#854) (<a href="https://github.com/rust-lang/rustlings/commit/1663a16eade6ca646b6ed061735f7982434d530d" rel="noopener noreferrer">1663a16e</a>)</li>
</ul>
<h4>Documentation improvements</h4>
<ul>
<li>Add hints on how to get GCC installed (#741) (<a href="https://github.com/rust-lang/rustlings/commit/bc5686174463ad6f4f6b824b0e9b97c3039d4886" rel="noopener noreferrer">bc56861</a>)</li>
<li>Fix some code blocks that were not highlighted (<a href="https://github.com/rust-lang/rustlings/commit/17f9d7429ccd133a72e815fb5618e0ce79560929" rel="noopener noreferrer">17f9d74</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

130
changelog/4.7.1/index.html Normal file
View File

@ -0,0 +1,130 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.7.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.7.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 20 2022 at 07:46 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>The amount of dependency crates that need to be compiled went down from ~65 to
~45 by bumping dependency versions.</li>
<li>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)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>arc1</strong>: A small part has been rewritten using a more functional code style (#968).</li>
<li><strong>using_as</strong>: A small part has been refactored to use <code>sum</code> instead of <code>fold</code>, resulting
in better readability.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>The changelog will now be manually written instead of being automatically generated by the
Git log.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

130
changelog/4.8.0/index.html Normal file
View File

@ -0,0 +1,130 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 4.8.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.8.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 1 2022 at 14:50 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Added a progress indicator for <code>rustlings watch</code>.</li>
<li>The installation script now checks for Rustup being installed.</li>
<li>Added a <code>rustlings lsp</code> command to enable <code>rust-analyzer</code>.</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>move_semantics5</strong>: Replaced "in vogue" with "in scope" in hint.</li>
<li><strong>if2</strong>: Fixed a typo in the hint.</li>
<li><strong>variables1</strong>: Fixed an incorrect line reference in the hint.</li>
<li>Fixed an out of bounds check in the installation Bash script.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Replaced the git.io URL with the fully qualified URL because of git.io's sunsetting.</li>
<li>Removed the deprecated Rust GitPod extension.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

182
changelog/5.0.0/index.html Normal file
View File

@ -0,0 +1,182 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.0.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 16 2022 at 12:36 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Hint comments in exercises now also include a reference to the
<code>hint</code> watch mode subcommand.</li>
<li><strong>intro1</strong>: Added more hints to point the user to the source file.</li>
<li><strong>variables</strong>: Switched variables3 and variables4.</li>
<li>Moved <code>vec</code> and <code>primitive_types</code> exercises before <code>move_semantics</code>.</li>
<li>Renamed <code>vec</code> to <code>vecs</code> to be more in line with the naming in general.</li>
<li>Split up the <code>collections</code> exercises in their own folders.</li>
<li><strong>vec2</strong>: Added a second part of the function that provides an alternative,
immutable way of modifying vec values.</li>
<li><strong>enums3</strong>: Added a hint.</li>
<li>Moved <code>strings</code> before <code>modules</code>.</li>
<li>Added a <code>strings3</code> exercise to teach modifying strings.</li>
<li>Added a <code>hashmaps3</code> exercise for some advanced usage of hashmaps.</li>
<li>Moved the original <code>quiz2</code> to be <code>strings4</code>, since it only tested strings
anyways.</li>
<li>Reworked <code>quiz2</code> into a new exercise that tests more chapters.</li>
<li>Renamed <code>option</code> to <code>options</code>.</li>
<li><strong>options1</strong>: Rewrote parts of the exercise to remove the weird array
iteration stuff.</li>
<li>Moved <code>generics3</code> to be <code>quiz3</code>.</li>
<li>Moved box/arc exercises behind <code>iterators</code>.</li>
<li><strong>iterators4</strong>: Added a test for factorials of zero.</li>
<li>Split <code>threads1</code> between two exercises, the first one focusing more on
<code>JoinHandle</code>s.</li>
<li>Added a <code>threads3</code> exercises that uses <code>std::sync::mpsc</code>.</li>
<li>Added a <code>clippy3</code> exercises with some more interesting checks.</li>
<li><strong>as_ref_mut</strong>: Added a section that actually tests <code>AsMut</code>.</li>
<li>Added 3 new lifetimes exercises.</li>
<li>Added 3 new traits exercises.</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>variables2</strong>: Made output messages more verbose.</li>
<li><strong>variables5</strong>: Added a nudging hint about shadowing.</li>
<li><strong>variables6</strong>: Fixed link to book.</li>
<li><strong>functions</strong>: Clarified the README wording. Generally cleaned up
some hints and added some extra comments.</li>
<li><strong>if2</strong>: Renamed function name to <code>foo_if_fizz</code>.</li>
<li><strong>move_semantics</strong>: Clarified some hints.</li>
<li><strong>quiz1</strong>: Renamed the function name to be more verbose.</li>
<li><strong>structs1</strong>: Use an integer type instead of strings. Renamed "unit structs"
to "unit-like structs", as is used in the book.</li>
<li><strong>structs3</strong>: Added the <code>panic!</code> statement in from the beginning.</li>
<li><strong>errors1</strong>: Use <code>is_empty()</code> instead of <code>len() &gt; 0</code></li>
<li><strong>errors3</strong>: Improved the hint.</li>
<li><strong>errors5</strong>: Improved exercise instructions and the hint.</li>
<li><strong>errors6</strong>: Provided the skeleton of one of the functions that's supposed
to be implemented.</li>
<li><strong>iterators3</strong>: Inserted <code>todo!</code> into <code>divide()</code> to keep a compiler error
from happening.</li>
<li><strong>from_str</strong>: Added a hint comment about string error message conversion with
<code>Box&lt;dyn Error&gt;</code>.</li>
<li><strong>try_from_into</strong>: Fixed the function name in comment.</li>
</ul>
<h4>Removed</h4>
<ul>
<li>Removed the legacy LSP feature that was using <code>mod.rs</code> files.</li>
<li>Removed <code>quiz4</code>.</li>
<li>Removed <code>advanced_errs</code>. 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.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Added missing exercises to the book index.</li>
<li>Updated spacing in Cargo.toml.</li>
<li>Added a GitHub actions config so that tests run on every PR/commit.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

150
changelog/5.1.0/index.html Normal file
View File

@ -0,0 +1,150 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.1.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.1.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 16 2022 at 07:56 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Added a new <code>rc1</code> exercise.</li>
<li>Added a new <code>cow1</code> exercise.</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>variables5</strong>: Corrected reference to previous exercise</li>
<li><strong>functions4</strong>: Fixed line number reference</li>
<li><strong>strings3</strong>: Clarified comment wording</li>
<li><strong>traits4, traits5</strong>: Fixed line number reference</li>
<li><strong>traits5</strong>:
<ul>
<li>Fixed typo in "parameter"</li>
<li>Made exercise prefer a traits-based solution</li>
</ul>
</li>
<li><strong>lifetimes2</strong>: Improved hint</li>
<li><strong>threads3</strong>: Fixed typo in hint</li>
<li><strong>box1</strong>: Replaced <code>unimplemented!</code> with <code>todo!</code></li>
<li><strong>errors5</strong>: Provided an explanation for usage of <code>Box&lt;dyn Error&gt;</code></li>
<li><strong>quiz2</strong>: Fixed a typo</li>
<li><strong>macros</strong>: Updated the macros book link</li>
<li><strong>options1</strong>:
<ul>
<li>Removed unused code</li>
<li>Added more granular tests</li>
</ul>
</li>
<li>Fixed some comment syntax shenanigans in info.toml</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Fixed a typo in .editorconfig</li>
<li>Fixed a typo in integration_tests.rs</li>
<li>Clarified manual installation instructions using <code>cargo install --path .</code></li>
<li>Added a link to our Zulip in the readme file</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

116
changelog/5.1.1/index.html Normal file
View File

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.1.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.1.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 17 2022 at 08:44 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Fixed an incorrect assertion in options1</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

126
changelog/5.2.0/index.html Normal file
View File

@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.2.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 27 2022 at 18:50 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li>Added a <code>reset</code> command</li>
</ul>
<h4>Changed</h4>
<ul>
<li><strong>options2</strong>: Convert the exercise to use tests</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><strong>threads3</strong>: Fixed a typo</li>
<li><strong>quiz1</strong>: Adjusted the explanations to be consistent with
the tests</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

123
changelog/5.2.1/index.html Normal file
View File

@ -0,0 +1,123 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.2.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.2.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 6 2022 at 10:23 UTC
</span>
</div>
<div class="release-body">
<h4>Fixed</h4>
<ul>
<li><strong>quiz1</strong>: Reworded the comment to actually reflect what's going on in the tests.
Also added another assert just to make sure.</li>
<li><strong>rc1</strong>: Fixed a typo in the hint.</li>
<li><strong>lifetimes</strong>: Add quotes to the <code>println!</code> output, for readability.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Fixed a typo in README.md</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

142
changelog/5.3.0/index.html Normal file
View File

@ -0,0 +1,142 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.3.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.3.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Dec 23 2022 at 16:10 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li><strong>cli</strong>: Added a percentage display in watch mode</li>
<li>Added a <code>flake.nix</code> for Nix users</li>
</ul>
<h4>Changed</h4>
<ul>
<li><strong>structs3</strong>: Added an additional test</li>
<li><strong>macros</strong>: Added a link to MacroKata in the README</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><strong>strings3</strong>: Added a link to <code>std</code> in the hint</li>
<li><strong>threads1</strong>: Corrected a hint link</li>
<li><strong>iterators1</strong>: Clarified hint steps</li>
<li><strong>errors5</strong>: Fix a typo in the hint</li>
<li><strong>options1</strong>: Clarified on the usage of the 24-hour system</li>
<li><strong>threads2, threads3</strong>: Explicitly use <code>Arc::clone</code></li>
<li><strong>structs3</strong>: Clarifed the hint</li>
<li><strong>quiz2, as_ref_mut, options1, traits1, traits2</strong>: Clarified hints</li>
<li><strong>traits1, traits2, cli</strong>: Tidied up unmatching backticks</li>
<li><strong>enums2</strong>: Removed unnecessary indirection of self</li>
<li><strong>enums3</strong>: Added an extra tuple comment</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Added a VSCode extension recommendation</li>
<li>Applied some Clippy and rustfmt formatting</li>
<li>Added a note on Windows PowerShell and other shell compatibility</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

147
changelog/5.4.0/index.html Normal file
View File

@ -0,0 +1,147 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.4.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.4.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Feb 12 2023 at 17:03 UTC
</span>
</div>
<div class="release-body">
<h4>Changed</h4>
<ul>
<li>Reordered exercises
<ul>
<li>Unwrapped <code>standard_library_types</code> into <code>iterators</code> and <code>smart_pointers</code></li>
<li>Moved smart pointer exercises behind threads</li>
<li>Ordered <code>rc1</code> before <code>arc1</code></li>
</ul>
</li>
<li><strong>intro1</strong>: Added a note on <code>rustlings lsp</code></li>
<li><strong>threads1</strong>: Panic if threads are not joined</li>
<li><strong>cli</strong>:
<ul>
<li>Made progress bar update proportional to amount of files verified</li>
<li>Decreased <code>watch</code> delay from 2 to 1 second</li>
</ul>
</li>
</ul>
<h4>Fixed</h4>
<ul>
<li>Capitalized "Rust" in exercise hints</li>
<li><strong>enums3</strong>: Removed superfluous tuple brackets</li>
<li><strong>quiz2, clippy1, iterators1</strong>: Fixed a typo</li>
<li><strong>rc1</strong>: Fixed a prompt error</li>
<li><strong>cli</strong>:
<ul>
<li>Fixed a typo in a method name</li>
<li>Specified the edition in <code>rustc</code> commands</li>
</ul>
</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Bumped min Rust version to 1.58 in installation script</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

125
changelog/5.4.1/index.html Normal file
View File

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.4.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.4.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Mar 10 2023 at 16:40 UTC
</span>
</div>
<div class="release-body">
<h4>Changed</h4>
<ul>
<li><code>vecs</code>: Added links to <code>iter_mut</code> and <code>map</code> to README.md</li>
<li><code>cow1</code>: Changed main to tests</li>
<li><code>iterators1</code>: Formatted according to rustfmt</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>errors5</code>: Unified undisclosed type notation</li>
<li><code>arc1</code>: Improved readability by avoiding implicit dereference</li>
<li><code>macros4</code>: Prevented auto-fix by adding <code>#[rustfmt::skip]</code></li>
<li><code>cli</code>: Actually show correct progress percentages</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

144
changelog/5.5.0/index.html Normal file
View File

@ -0,0 +1,144 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.5.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.5.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
May 17 2023 at 14:31 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li><code>strings2</code>: Added a reference to the book chapter for reference conversion</li>
<li><code>lifetimes</code>: Added a link to the lifetimekata project</li>
<li>Added a new <code>tests4</code> exercises, which teaches about testing for panics</li>
<li>Added a <code>!</code> prefix command to watch mode that runs an external command</li>
<li>Added a <code>--success-hints</code> option to watch mode that shows hints on exercise success</li>
</ul>
<h4>Changed</h4>
<ul>
<li><code>vecs2</code>: Renamed iterator variable bindings for clarify</li>
<li><code>lifetimes</code>: Changed order of book references</li>
<li><code>hashmaps2</code>: Clarified instructions in the todo block</li>
<li>Moved lifetime exercises before test exercises (via the recommended book ordering)</li>
<li><code>options2</code>: Improved tests for layering options</li>
<li><code>modules2</code>: Added more information to the hint</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>errors2</code>: Corrected a comment wording</li>
<li><code>iterators2</code>: Fixed a spelling mistake in the hint text</li>
<li><code>variables</code>: Wrapped the mut keyword with backticks for readability</li>
<li><code>move_semantics2</code>: Removed references to line numbers</li>
<li><code>cow1</code>: Clarified the <code>owned_no_mutation</code> comments</li>
<li><code>options3</code>: Changed exercise to panic when no match is found</li>
<li><code>rustlings lsp</code> now generates absolute paths, which should fix VSCode <code>rust-analyzer</code> usage on Windows</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Added a markdown linter to run on GitHub actions</li>
<li>Split quick installation section into two code blocks</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

116
changelog/5.5.1/index.html Normal file
View File

@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.5.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.5.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
May 17 2023 at 19:07 UTC
</span>
</div>
<div class="release-body">
<h4>Fixed</h4>
<ul>
<li>Reverted <code>rust-project.json</code> path generation due to an upstream <code>rust-analyzer</code> fix.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

152
changelog/5.6.0/index.html Normal file
View File

@ -0,0 +1,152 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.6.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.6.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 4 2023 at 13:24 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li>New exercise: <code>if3</code>, teaching the user about <code>if let</code> statements.</li>
<li><code>hashmaps2</code>: Added an extra test function to check if the amount of fruits is higher than zero.</li>
<li><code>enums3</code>: Added a test for <code>Message</code>.</li>
<li><code>if1</code>: Added a test case to check equal values.</li>
<li><code>if3</code>: Added a note specifying that there are no test changes needed.</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Swapped the order of threads and smart pointer exercises.</li>
<li>Rewrote the CLI to use <code>clap</code> - it's matured much since we switched to <code>argh</code> :)</li>
<li><code>structs3</code>: Switched from i32 to u32.</li>
<li><code>move_semantics</code>: Switched 1-4 to tests, and rewrote them to be way simpler, while still teaching about the same
concepts.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>iterators5</code>:
<ul>
<li>Removed an outdated part of the hint.</li>
<li>Renamed variables to use snake_case.</li>
</ul>
</li>
<li><code>vecs2</code>: Updated the hint to reference the renamed loop variable.</li>
<li><code>enums3</code>: Changed message string in test so that it gets properly tested.</li>
<li><code>strings2</code>: Corrected line number in hint, then removed it (this both happened as part of this release cycle).</li>
<li><code>primitive_types4</code>: Updated hint to the correct ending index.</li>
<li><code>quiz1</code>: Removed duplicated sentence from exercise comments.</li>
<li><code>errors4</code>: Improved comment.</li>
<li><code>from_into</code>: Fixed test values.</li>
<li><code>cow1</code>: Added <code>.to_mut()</code> to distinguish from the previous test case.</li>
<li><code>threads2</code>: Updated hint text to reference the correct book heading.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Cleaned up the explanation paragraphs at the start of each exercise.</li>
<li>Lots of Nix housekeeping that I don't feel qualified to write about!</li>
<li>Improved CI workflows, we're now testing on multiple platforms at once.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

125
changelog/5.6.1/index.html Normal file
View File

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 5.6.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.6.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 18 2023 at 08:18 UTC
</span>
</div>
<div class="release-body">
<h4>Changed</h4>
<ul>
<li>Converted all exercises with assertions to test mode.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>cow1</code>: Reverted regression introduced by calling <code>to_mut</code> where it
shouldn't have been called, and clarified comment.</li>
<li><code>primitive_types3</code>: Require at least an array of 100 elements.</li>
<li>Removed hint comments when no hint exists for the exercise.</li>
<li><code>as_ref_mut</code>: Fixed a typo in a test function name.</li>
<li><code>enums3</code>: Fixed formatting with <code>rustfmt</code>.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

1866
changelog/index.html Normal file
View File

@ -0,0 +1,1866 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Releases</h1>
<div class="releases-wrapper">
<nav class="releases-nav">
<ul>
<li class="">
<a href="v6.3.0/">v6.3.0</a>
</li>
<li class="">
<a href="v6.2.0/">v6.2.0</a>
</li>
<li class="">
<a href="v6.1.0/">v6.1.0</a>
</li>
<li class="">
<a href="v6.0.1/">v6.0.1</a>
</li>
<li class="">
<a href="v6.0.0/">v6.0.0</a>
</li>
<li class="">
<a href="5.6.1/">5.6.1</a>
</li>
<li class="">
<a href="5.6.0/">5.6.0</a>
</li>
<li class="">
<a href="5.5.1/">5.5.1</a>
</li>
<li class="">
<a href="5.5.0/">5.5.0</a>
</li>
<li class="">
<a href="5.4.1/">5.4.1</a>
</li>
<li class="">
<a href="5.4.0/">5.4.0</a>
</li>
<li class="">
<a href="5.3.0/">5.3.0</a>
</li>
<li class="">
<a href="5.2.1/">5.2.1</a>
</li>
<li class="">
<a href="5.2.0/">5.2.0</a>
</li>
<li class="">
<a href="5.1.1/">5.1.1</a>
</li>
<li class="">
<a href="5.1.0/">5.1.0</a>
</li>
<li class="">
<a href="5.0.0/">5.0.0</a>
</li>
<li class="">
<a href="4.8.0/">4.8.0</a>
</li>
<li class="">
<a href="4.7.1/">4.7.1</a>
</li>
<li class="">
<a href="4.7.0/">4.7.0</a>
</li>
<li class="">
<a href="4.6.0/">4.6.0</a>
</li>
<li class="">
<a href="4.5.0/">4.5.0</a>
</li>
<li class="">
<a href="4.4.0/">4.4.0</a>
</li>
<li class="">
<a href="4.3.0/">4.3.0</a>
</li>
<li class="">
<a href="4.2.0/">4.2.0</a>
</li>
<li class="">
<a href="4.1.0/">4.1.0</a>
</li>
<li class="">
<a href="4.0.0/">4.0.0</a>
</li>
<li class="">
<a href="3.0.0/">3.0.0</a>
</li>
<li class="">
<a href="2.2.1/">2.2.1</a>
</li>
<li class="">
<a href="2.2.0/">2.2.0</a>
</li>
</ul>
</nav>
<div class="releases-list">
<section class="release ">
<h2 id="tag-v6.3.0">
<a href="v6.3.0/">
Rustlings 6.3.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.3.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 29 2024 at 15:24 UTC
</span>
</div>
<div class="release-body">
<h3>Added</h3>
<ul>
<li>Add the following exercise lints:
<ul>
<li><code>forbid(unsafe_code)</code>: You shouldn't write unsafe code in Rustlings.</li>
<li><code>forbid(unstable_features)</code>: You don't need unstable features in Rustlings and shouldn't rely on them while learning Rust.</li>
<li><code>forbid(todo)</code>: You forgot a <code>todo!()</code>.</li>
<li><code>forbid(empty_loop)</code>: This can only happen by mistake in Rustlings.</li>
<li><code>deny(infinite_loop)</code>: No infinite loops are needed in Rustlings.</li>
<li><code>deny(mem_forget)</code>: You shouldn't leak memory while still learning Rust.</li>
</ul>
</li>
<li>Show a link to every exercise file in the list.</li>
<li>Add scroll padding in the list.</li>
<li>Break the help footer of the list into two lines when the terminal width isn't big enough.</li>
<li>Enable scrolling with the mouse in the list.</li>
<li><code>dev check</code>: Show the progress of checks.</li>
<li><code>dev check</code>: Check that the length of all exercise names is lower than 32.</li>
<li><code>dev check</code>: Check if exercise contains no tests and isn't marked with <code>test = false</code>.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The compilation time when installing Rustlings is reduced.</li>
<li>Pressing <code>c</code> in the list for "continue on" now quits the list after setting the selected exercise as the current one.</li>
<li>Better highlighting of the solution file after an exercise is done.</li>
<li>Don't show the output of successful tests anymore. Instead, show the pretty output for tests.</li>
<li>Be explicit about <code>q</code> only quitting the list and not the whole program in the list.</li>
<li>Be explicit about <code>r</code> only resetting one exercise (the selected one) in the list.</li>
<li>Ignore the standard output of <code>git init</code>.</li>
<li><code>threads3</code>: Remove the queue length and improve tests.</li>
<li><code>errors4</code>: Use match instead of a comparison chain in the solution.</li>
<li><code>functions3</code>: Only take <code>u8</code> to avoid using a too high number of iterations by mistake.</li>
<li><code>dev check</code>: Always check with strict Clippy (warnings to errors) when checking the solutions.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix the error on some systems about too many open files during the final check of all exercises.</li>
<li>Fix the list when the terminal height is too low.</li>
<li>Restore the terminal after an error in the list.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-v6.2.0">
<a href="v6.2.0/">
Rustlings 6.2.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 9 2024 at 09:59 UTC
</span>
</div>
<div class="release-body">
<h3>Added</h3>
<ul>
<li>Show a message before checking and running an exercise. This gives the user instant feedback and avoids confusion if the checks take too long.</li>
<li>Show a helpful error message when trying to install Rustlings with a Rust version lower than the minimum one that Rustlings supports.</li>
<li>Add a <code>README.md</code> file to the <code>solutions/</code> directory.</li>
<li>Allow initializing Rustlings in a Cargo workspace.</li>
<li><code>dev check</code>: Check that all solutions are formatted with <code>rustfmt</code>.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Remove the state file and the solutions directory from the generated <code>.gitignore</code> file.</li>
<li>Run the final check of all exercises in parallel.</li>
<li>Small exercise improvements.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-v6.1.0">
<a href="v6.1.0/">
Rustlings 6.1.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.1.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 10 2024 at 14:55 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li><code>dev check</code>: Check that all exercises (including third-party ones) include at least one <code>TODO</code> comment.</li>
<li><code>dev check</code>: Check that all exercises actually fail to run (not already solved).</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Make enum variants more consistent between enum exercises.</li>
<li><code>iterators3</code>: Teach about the possible case of integer overflow during division.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li>Exit with a helpful error message on missing/unsupported terminal/TTY.</li>
<li>Mark the last exercise as done.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-v6.0.1">
<a href="v6.0.1/">
Rustlings 6.0.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.0.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 4 2024 at 18:04 UTC
</span>
</div>
<div class="release-body">
<p>Small exercise improvements and fixes.
Most importantly, fixed that the exercise <code>clippy1</code> was already solved 😅</p>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-v6.0.0">
<a href="v6.0.0/">
Rustlings 6.0.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 3 2024 at 13:43 UTC
</span>
</div>
<div class="release-body">
<p>This release is the result of a complete rewrite to deliver a ton of new features and improvements ✨
The most important changes are highlighted below.</p>
<h3>Installation</h3>
<p>The installation has been simplified a lot!
To install Rustlings after installing Rust, all what you need to do now is running the following command:</p>
<pre style="background-color:#263238;"><span style="color:#82aaff;">cargo install rustlings
</span></pre>
<p>Yes, this means that Rustlings is now on <a href="https://crates.io/crates/rustlings" rel="noopener noreferrer">crates.io</a> 🎉</p>
<p>You can read about the motivations of this change in <a href="https://github.com/rust-lang/rustlings/issues/1919" rel="noopener noreferrer">this issue</a>.</p>
<h3>UI/UX</h3>
<ul>
<li>The UI is now responsive when the terminal is resized.</li>
<li>The progress bar was moved to the bottom so that you can always see your progress and the current exercise to work on.</li>
<li>The current exercise path is now a terminal link. It will open the exercise file in your default editor when you click on it.</li>
<li>A small prompt is now always shown at the bottom. It allows you to choose an action by entering a character. For example, entering <code>h</code> will show you the hint of the current exercise.</li>
<li>The comment "I AM NOT DONE!" doesn't exist anymore. Instead of needing to remove it to go to the next exercise, you need to enter <code>n</code> in the terminal.</li>
</ul>
<h3>List mode</h3>
<p>A list mode was added using <a href="https://ratatui.rs" rel="noopener noreferrer">Ratatui</a>.
You can enter it by entering <code>l</code> in the watch mode.
It offers the following features:</p>
<ul>
<li>Browse all exercises and see their state (pending/done).</li>
<li>Filter exercises based on their state (pending/done).</li>
<li>Continue at another exercise. This allows you to skip some exercises or go back to previous ones.</li>
<li>Reset an exercise so you can start over and revert your changes.</li>
</ul>
<h3>Solutions</h3>
<p>After finishing an exercise, a solution file will be available and Rustlings will show you its path in green.
This allows you to compare your solution with an idiomatic solution and maybe learn about other ways to solve a problem.</p>
<p>While writing the solutions, all exercises have been polished 🌟
For example, every exercise now contains <code>TODO</code> comments to highlight what the user needs to change and where.</p>
<h3>LSP support out of the box</h3>
<p>Instead of creating a <code>project.json</code> file using <code>rustlings lsp</code>, Rustlings now works with a <code>Cargo.toml</code> file out of the box.
No actions are needed to activate the language server <code>rust-analyzer</code>.</p>
<p>This should avoid issues related to the language server or to running exercises, especially the ones with Clippy.</p>
<h3>Clippy</h3>
<p>Clippy lints are now shown on all exercises, not only the Clippy exercises 📎
Make Clippy your friend from early on 🥰</p>
<h3>Third-party exercises</h3>
<p>Rustlings now supports third-party exercises!</p>
<p>Do you want to create your own set of Rustlings exercises to focus on some specific topic?
Or do you want to translate the original Rustlings exercises?
Then follow the link to the guide about <a href="THIRD_PARTY_EXERCISES.md" rel="noopener noreferrer">third-party exercises</a>!</p>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.6.1">
<a href="5.6.1/">
Rustlings 5.6.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.6.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 18 2023 at 08:18 UTC
</span>
</div>
<div class="release-body">
<h4>Changed</h4>
<ul>
<li>Converted all exercises with assertions to test mode.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>cow1</code>: Reverted regression introduced by calling <code>to_mut</code> where it
shouldn't have been called, and clarified comment.</li>
<li><code>primitive_types3</code>: Require at least an array of 100 elements.</li>
<li>Removed hint comments when no hint exists for the exercise.</li>
<li><code>as_ref_mut</code>: Fixed a typo in a test function name.</li>
<li><code>enums3</code>: Fixed formatting with <code>rustfmt</code>.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.6.0">
<a href="5.6.0/">
Rustlings 5.6.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.6.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 4 2023 at 13:24 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li>New exercise: <code>if3</code>, teaching the user about <code>if let</code> statements.</li>
<li><code>hashmaps2</code>: Added an extra test function to check if the amount of fruits is higher than zero.</li>
<li><code>enums3</code>: Added a test for <code>Message</code>.</li>
<li><code>if1</code>: Added a test case to check equal values.</li>
<li><code>if3</code>: Added a note specifying that there are no test changes needed.</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Swapped the order of threads and smart pointer exercises.</li>
<li>Rewrote the CLI to use <code>clap</code> - it's matured much since we switched to <code>argh</code> :)</li>
<li><code>structs3</code>: Switched from i32 to u32.</li>
<li><code>move_semantics</code>: Switched 1-4 to tests, and rewrote them to be way simpler, while still teaching about the same
concepts.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>iterators5</code>:
<ul>
<li>Removed an outdated part of the hint.</li>
<li>Renamed variables to use snake_case.</li>
</ul>
</li>
<li><code>vecs2</code>: Updated the hint to reference the renamed loop variable.</li>
<li><code>enums3</code>: Changed message string in test so that it gets properly tested.</li>
<li><code>strings2</code>: Corrected line number in hint, then removed it (this both happened as part of this release cycle).</li>
<li><code>primitive_types4</code>: Updated hint to the correct ending index.</li>
<li><code>quiz1</code>: Removed duplicated sentence from exercise comments.</li>
<li><code>errors4</code>: Improved comment.</li>
<li><code>from_into</code>: Fixed test values.</li>
<li><code>cow1</code>: Added <code>.to_mut()</code> to distinguish from the previous test case.</li>
<li><code>threads2</code>: Updated hint text to reference the correct book heading.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Cleaned up the explanation paragraphs at the start of each exercise.</li>
<li>Lots of Nix housekeeping that I don't feel qualified to write about!</li>
<li>Improved CI workflows, we're now testing on multiple platforms at once.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.5.1">
<a href="5.5.1/">
Rustlings 5.5.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.5.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
May 17 2023 at 19:07 UTC
</span>
</div>
<div class="release-body">
<h4>Fixed</h4>
<ul>
<li>Reverted <code>rust-project.json</code> path generation due to an upstream <code>rust-analyzer</code> fix.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.5.0">
<a href="5.5.0/">
Rustlings 5.5.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.5.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
May 17 2023 at 14:31 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li><code>strings2</code>: Added a reference to the book chapter for reference conversion</li>
<li><code>lifetimes</code>: Added a link to the lifetimekata project</li>
<li>Added a new <code>tests4</code> exercises, which teaches about testing for panics</li>
<li>Added a <code>!</code> prefix command to watch mode that runs an external command</li>
<li>Added a <code>--success-hints</code> option to watch mode that shows hints on exercise success</li>
</ul>
<h4>Changed</h4>
<ul>
<li><code>vecs2</code>: Renamed iterator variable bindings for clarify</li>
<li><code>lifetimes</code>: Changed order of book references</li>
<li><code>hashmaps2</code>: Clarified instructions in the todo block</li>
<li>Moved lifetime exercises before test exercises (via the recommended book ordering)</li>
<li><code>options2</code>: Improved tests for layering options</li>
<li><code>modules2</code>: Added more information to the hint</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>errors2</code>: Corrected a comment wording</li>
<li><code>iterators2</code>: Fixed a spelling mistake in the hint text</li>
<li><code>variables</code>: Wrapped the mut keyword with backticks for readability</li>
<li><code>move_semantics2</code>: Removed references to line numbers</li>
<li><code>cow1</code>: Clarified the <code>owned_no_mutation</code> comments</li>
<li><code>options3</code>: Changed exercise to panic when no match is found</li>
<li><code>rustlings lsp</code> now generates absolute paths, which should fix VSCode <code>rust-analyzer</code> usage on Windows</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Added a markdown linter to run on GitHub actions</li>
<li>Split quick installation section into two code blocks</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.4.1">
<a href="5.4.1/">
Rustlings 5.4.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.4.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Mar 10 2023 at 16:40 UTC
</span>
</div>
<div class="release-body">
<h4>Changed</h4>
<ul>
<li><code>vecs</code>: Added links to <code>iter_mut</code> and <code>map</code> to README.md</li>
<li><code>cow1</code>: Changed main to tests</li>
<li><code>iterators1</code>: Formatted according to rustfmt</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><code>errors5</code>: Unified undisclosed type notation</li>
<li><code>arc1</code>: Improved readability by avoiding implicit dereference</li>
<li><code>macros4</code>: Prevented auto-fix by adding <code>#[rustfmt::skip]</code></li>
<li><code>cli</code>: Actually show correct progress percentages</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.4.0">
<a href="5.4.0/">
Rustlings 5.4.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.4.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Feb 12 2023 at 17:03 UTC
</span>
</div>
<div class="release-body">
<h4>Changed</h4>
<ul>
<li>Reordered exercises
<ul>
<li>Unwrapped <code>standard_library_types</code> into <code>iterators</code> and <code>smart_pointers</code></li>
<li>Moved smart pointer exercises behind threads</li>
<li>Ordered <code>rc1</code> before <code>arc1</code></li>
</ul>
</li>
<li><strong>intro1</strong>: Added a note on <code>rustlings lsp</code></li>
<li><strong>threads1</strong>: Panic if threads are not joined</li>
<li><strong>cli</strong>:
<ul>
<li>Made progress bar update proportional to amount of files verified</li>
<li>Decreased <code>watch</code> delay from 2 to 1 second</li>
</ul>
</li>
</ul>
<h4>Fixed</h4>
<ul>
<li>Capitalized "Rust" in exercise hints</li>
<li><strong>enums3</strong>: Removed superfluous tuple brackets</li>
<li><strong>quiz2, clippy1, iterators1</strong>: Fixed a typo</li>
<li><strong>rc1</strong>: Fixed a prompt error</li>
<li><strong>cli</strong>:
<ul>
<li>Fixed a typo in a method name</li>
<li>Specified the edition in <code>rustc</code> commands</li>
</ul>
</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Bumped min Rust version to 1.58 in installation script</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.3.0">
<a href="5.3.0/">
Rustlings 5.3.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.3.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Dec 23 2022 at 16:10 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li><strong>cli</strong>: Added a percentage display in watch mode</li>
<li>Added a <code>flake.nix</code> for Nix users</li>
</ul>
<h4>Changed</h4>
<ul>
<li><strong>structs3</strong>: Added an additional test</li>
<li><strong>macros</strong>: Added a link to MacroKata in the README</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><strong>strings3</strong>: Added a link to <code>std</code> in the hint</li>
<li><strong>threads1</strong>: Corrected a hint link</li>
<li><strong>iterators1</strong>: Clarified hint steps</li>
<li><strong>errors5</strong>: Fix a typo in the hint</li>
<li><strong>options1</strong>: Clarified on the usage of the 24-hour system</li>
<li><strong>threads2, threads3</strong>: Explicitly use <code>Arc::clone</code></li>
<li><strong>structs3</strong>: Clarifed the hint</li>
<li><strong>quiz2, as_ref_mut, options1, traits1, traits2</strong>: Clarified hints</li>
<li><strong>traits1, traits2, cli</strong>: Tidied up unmatching backticks</li>
<li><strong>enums2</strong>: Removed unnecessary indirection of self</li>
<li><strong>enums3</strong>: Added an extra tuple comment</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Added a VSCode extension recommendation</li>
<li>Applied some Clippy and rustfmt formatting</li>
<li>Added a note on Windows PowerShell and other shell compatibility</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.2.1">
<a href="5.2.1/">
Rustlings 5.2.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.2.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 6 2022 at 10:23 UTC
</span>
</div>
<div class="release-body">
<h4>Fixed</h4>
<ul>
<li><strong>quiz1</strong>: Reworded the comment to actually reflect what's going on in the tests.
Also added another assert just to make sure.</li>
<li><strong>rc1</strong>: Fixed a typo in the hint.</li>
<li><strong>lifetimes</strong>: Add quotes to the <code>println!</code> output, for readability.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Fixed a typo in README.md</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.2.0">
<a href="5.2.0/">
Rustlings 5.2.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 27 2022 at 18:50 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li>Added a <code>reset</code> command</li>
</ul>
<h4>Changed</h4>
<ul>
<li><strong>options2</strong>: Convert the exercise to use tests</li>
</ul>
<h4>Fixed</h4>
<ul>
<li><strong>threads3</strong>: Fixed a typo</li>
<li><strong>quiz1</strong>: Adjusted the explanations to be consistent with
the tests</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.1.1">
<a href="5.1.1/">
Rustlings 5.1.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.1.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 17 2022 at 08:44 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Fixed an incorrect assertion in options1</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.1.0">
<a href="5.1.0/">
Rustlings 5.1.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.1.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 16 2022 at 07:56 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Added a new <code>rc1</code> exercise.</li>
<li>Added a new <code>cow1</code> exercise.</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>variables5</strong>: Corrected reference to previous exercise</li>
<li><strong>functions4</strong>: Fixed line number reference</li>
<li><strong>strings3</strong>: Clarified comment wording</li>
<li><strong>traits4, traits5</strong>: Fixed line number reference</li>
<li><strong>traits5</strong>:
<ul>
<li>Fixed typo in "parameter"</li>
<li>Made exercise prefer a traits-based solution</li>
</ul>
</li>
<li><strong>lifetimes2</strong>: Improved hint</li>
<li><strong>threads3</strong>: Fixed typo in hint</li>
<li><strong>box1</strong>: Replaced <code>unimplemented!</code> with <code>todo!</code></li>
<li><strong>errors5</strong>: Provided an explanation for usage of <code>Box&lt;dyn Error&gt;</code></li>
<li><strong>quiz2</strong>: Fixed a typo</li>
<li><strong>macros</strong>: Updated the macros book link</li>
<li><strong>options1</strong>:
<ul>
<li>Removed unused code</li>
<li>Added more granular tests</li>
</ul>
</li>
<li>Fixed some comment syntax shenanigans in info.toml</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Fixed a typo in .editorconfig</li>
<li>Fixed a typo in integration_tests.rs</li>
<li>Clarified manual installation instructions using <code>cargo install --path .</code></li>
<li>Added a link to our Zulip in the readme file</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-5.0.0">
<a href="5.0.0/">
Rustlings 5.0.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
5.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 16 2022 at 12:36 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Hint comments in exercises now also include a reference to the
<code>hint</code> watch mode subcommand.</li>
<li><strong>intro1</strong>: Added more hints to point the user to the source file.</li>
<li><strong>variables</strong>: Switched variables3 and variables4.</li>
<li>Moved <code>vec</code> and <code>primitive_types</code> exercises before <code>move_semantics</code>.</li>
<li>Renamed <code>vec</code> to <code>vecs</code> to be more in line with the naming in general.</li>
<li>Split up the <code>collections</code> exercises in their own folders.</li>
<li><strong>vec2</strong>: Added a second part of the function that provides an alternative,
immutable way of modifying vec values.</li>
<li><strong>enums3</strong>: Added a hint.</li>
<li>Moved <code>strings</code> before <code>modules</code>.</li>
<li>Added a <code>strings3</code> exercise to teach modifying strings.</li>
<li>Added a <code>hashmaps3</code> exercise for some advanced usage of hashmaps.</li>
<li>Moved the original <code>quiz2</code> to be <code>strings4</code>, since it only tested strings
anyways.</li>
<li>Reworked <code>quiz2</code> into a new exercise that tests more chapters.</li>
<li>Renamed <code>option</code> to <code>options</code>.</li>
<li><strong>options1</strong>: Rewrote parts of the exercise to remove the weird array
iteration stuff.</li>
<li>Moved <code>generics3</code> to be <code>quiz3</code>.</li>
<li>Moved box/arc exercises behind <code>iterators</code>.</li>
<li><strong>iterators4</strong>: Added a test for factorials of zero.</li>
<li>Split <code>threads1</code> between two exercises, the first one focusing more on
<code>JoinHandle</code>s.</li>
<li>Added a <code>threads3</code> exercises that uses <code>std::sync::mpsc</code>.</li>
<li>Added a <code>clippy3</code> exercises with some more interesting checks.</li>
<li><strong>as_ref_mut</strong>: Added a section that actually tests <code>AsMut</code>.</li>
<li>Added 3 new lifetimes exercises.</li>
<li>Added 3 new traits exercises.</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>variables2</strong>: Made output messages more verbose.</li>
<li><strong>variables5</strong>: Added a nudging hint about shadowing.</li>
<li><strong>variables6</strong>: Fixed link to book.</li>
<li><strong>functions</strong>: Clarified the README wording. Generally cleaned up
some hints and added some extra comments.</li>
<li><strong>if2</strong>: Renamed function name to <code>foo_if_fizz</code>.</li>
<li><strong>move_semantics</strong>: Clarified some hints.</li>
<li><strong>quiz1</strong>: Renamed the function name to be more verbose.</li>
<li><strong>structs1</strong>: Use an integer type instead of strings. Renamed "unit structs"
to "unit-like structs", as is used in the book.</li>
<li><strong>structs3</strong>: Added the <code>panic!</code> statement in from the beginning.</li>
<li><strong>errors1</strong>: Use <code>is_empty()</code> instead of <code>len() &gt; 0</code></li>
<li><strong>errors3</strong>: Improved the hint.</li>
<li><strong>errors5</strong>: Improved exercise instructions and the hint.</li>
<li><strong>errors6</strong>: Provided the skeleton of one of the functions that's supposed
to be implemented.</li>
<li><strong>iterators3</strong>: Inserted <code>todo!</code> into <code>divide()</code> to keep a compiler error
from happening.</li>
<li><strong>from_str</strong>: Added a hint comment about string error message conversion with
<code>Box&lt;dyn Error&gt;</code>.</li>
<li><strong>try_from_into</strong>: Fixed the function name in comment.</li>
</ul>
<h4>Removed</h4>
<ul>
<li>Removed the legacy LSP feature that was using <code>mod.rs</code> files.</li>
<li>Removed <code>quiz4</code>.</li>
<li>Removed <code>advanced_errs</code>. 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.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Added missing exercises to the book index.</li>
<li>Updated spacing in Cargo.toml.</li>
<li>Added a GitHub actions config so that tests run on every PR/commit.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.8.0">
<a href="4.8.0/">
Rustlings 4.8.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.8.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 1 2022 at 14:50 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Added a progress indicator for <code>rustlings watch</code>.</li>
<li>The installation script now checks for Rustup being installed.</li>
<li>Added a <code>rustlings lsp</code> command to enable <code>rust-analyzer</code>.</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>move_semantics5</strong>: Replaced "in vogue" with "in scope" in hint.</li>
<li><strong>if2</strong>: Fixed a typo in the hint.</li>
<li><strong>variables1</strong>: Fixed an incorrect line reference in the hint.</li>
<li>Fixed an out of bounds check in the installation Bash script.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>Replaced the git.io URL with the fully qualified URL because of git.io's sunsetting.</li>
<li>Removed the deprecated Rust GitPod extension.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.7.1">
<a href="4.7.1/">
Rustlings 4.7.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.7.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 20 2022 at 07:46 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>The amount of dependency crates that need to be compiled went down from ~65 to
~45 by bumping dependency versions.</li>
<li>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)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>arc1</strong>: A small part has been rewritten using a more functional code style (#968).</li>
<li><strong>using_as</strong>: A small part has been refactored to use <code>sum</code> instead of <code>fold</code>, resulting
in better readability.</li>
</ul>
<h4>Housekeeping</h4>
<ul>
<li>The changelog will now be manually written instead of being automatically generated by the
Git log.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.7.0">
<a href="4.7.0/">
Rustlings 4.7.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.7.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 14 2022 at 09:23 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Add move_semantics6.rs exercise (#908) (<a href="https://github.com/rust-lang/rustlings/commit/3f0e1303e0b3bf3fecc0baced3c8b8a37f83c184" rel="noopener noreferrer">3f0e1303</a>)</li>
<li><strong>intro:</strong> Add intro section. (<a href="https://github.com/rust-lang/rustlings/commit/21c9f44168394e08338fd470b5f49b1fd235986f" rel="noopener noreferrer">21c9f441</a>)</li>
<li>Include exercises folder in the project structure behind a feature, enabling rust-analyzer to work (#917) (<a href="https://github.com/rust-lang/rustlings/commit/179a75a68d03ac9518dec2297fb17f91a4fc506b" rel="noopener noreferrer">179a75a6</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>Fix a few spelling mistakes (<a href="https://github.com/rust-lang/rustlings/commit/1c0fe3cbcca85f90b3985985b8e265ee872a2ab2" rel="noopener noreferrer">1c0fe3cb</a>)</li>
<li><strong>cli:</strong>
<ul>
<li>Move long text strings into constants. (<a href="https://github.com/rust-lang/rustlings/commit/f78c48020830d7900dd8d81f355606581670446d" rel="noopener noreferrer">f78c4802</a>)</li>
<li>Replace <code>filter_map()</code> with <code>find_map()</code> (<a href="https://github.com/rust-lang/rustlings/commit/9b27e8d993ca20232fe38a412750c3f845a83b65" rel="noopener noreferrer">9b27e8d</a>)</li>
</ul>
</li>
<li><strong>clippy1:</strong>
<ul>
<li>Set clippy::float_cmp lint to deny (#907) (<a href="https://github.com/rust-lang/rustlings/commit/71a06044e6a96ff756dc31d7b0ed665ae4badb57" rel="noopener noreferrer">71a06044</a>)</li>
<li>Updated code to test correctness clippy lint with approx_constant lint rule (<a href="https://github.com/rust-lang/rustlings/commit/f2650de369810867d2763e935ac0963c32ec420e" rel="noopener noreferrer">f2650de3</a>)</li>
</ul>
</li>
<li><strong>errors1:</strong>
<ul>
<li>Add a comment to make the purpose more clear (#486) (<a href="https://github.com/rust-lang/rustlings/commit/cbcde345409c3e550112e449242848eaa3391bb6" rel="noopener noreferrer">cbcde345</a>)</li>
<li>Don't modify tests (#958) (<a href="https://github.com/rust-lang/rustlings/commit/60bb7cc3931d21d3986ad52b2b302e632a93831c" rel="noopener noreferrer">60bb7cc</a>)</li>
</ul>
</li>
<li><strong>errors6:</strong> Remove existing answer code (<a href="https://github.com/rust-lang/rustlings/commit/43d0623086edbc46fe896ba59c7afa22c3da9f7a" rel="noopener noreferrer">43d0623</a>)</li>
<li><strong>functions5:</strong> Remove wrong new line and small English improvements (#885) (<a href="https://github.com/rust-lang/rustlings/commit/8ef4869b264094e5a9b50452b4534823a9df19c3" rel="noopener noreferrer">8ef4869b</a>)</li>
<li><strong>install:</strong> protect path with whitespaces using quotes and stop at the first error (<a href="https://github.com/rust-lang/rustlings/commit/d114847f256c5f571c0b4c87e04b04bce3435509" rel="noopener noreferrer">d114847f</a>)</li>
<li><strong>intro1:</strong> Add compiler error explanation. (<a href="https://github.com/rust-lang/rustlings/commit/9b8de65525a5576b78cf0c8e4098cdd34296338f" rel="noopener noreferrer">9b8de655</a>)</li>
<li><strong>iterators1:</strong> reorder TODO steps (<a href="https://github.com/rust-lang/rustlings/commit/0bd7a0631a17a9d69af5746795a30efc9cf64e6e" rel="noopener noreferrer">0bd7a063</a>)</li>
<li><strong>move_semantics2:</strong> Add comment (<a href="https://github.com/rust-lang/rustlings/commit/89650f808af23a32c9a2c6d46592b77547a6a464" rel="noopener noreferrer">89650f80</a>)</li>
<li><strong>move_semantics5:</strong> correct typo (#857) (<a href="https://github.com/rust-lang/rustlings/commit/46c28d5cef3d8446b5a356b19d8dbc725f91a3a0" rel="noopener noreferrer">46c28d5c</a>)</li>
<li><strong>quiz1:</strong> update to say quiz covers "If" (<a href="https://github.com/rust-lang/rustlings/commit/1622e8c198d89739765c915203efff0091bdeb78" rel="noopener noreferrer">1622e8c1</a>)</li>
<li><strong>structs3:</strong>
<ul>
<li>Add a hint for panic (#608) (<a href="https://github.com/rust-lang/rustlings/commit/4f7ff5d9c7b2d8b045194c1a9469d37e30257c4a" rel="noopener noreferrer">4f7ff5d9</a>)</li>
<li>remove redundant 'return' (#852) (<a href="https://github.com/rust-lang/rustlings/commit/bf33829da240375d086f96267fc2e02fa6b07001" rel="noopener noreferrer">bf33829d</a>)</li>
<li>Assigned value to <code>cents_per_gram</code> in test (<a href="https://github.com/rust-lang/rustlings/commit/d1ee2daf14f19105e6db3f9c610f44293d688532" rel="noopener noreferrer">d1ee2da</a>)</li>
</ul>
</li>
<li><strong>structs3.rs:</strong> assigned value to cents_per_gram in test (<a href="https://github.com/rust-lang/rustlings/commit/d1ee2daf14f19105e6db3f9c610f44293d688532" rel="noopener noreferrer">d1ee2daf</a>)</li>
<li><strong>traits1:</strong> rename test functions to snake case (#854) (<a href="https://github.com/rust-lang/rustlings/commit/1663a16eade6ca646b6ed061735f7982434d530d" rel="noopener noreferrer">1663a16e</a>)</li>
</ul>
<h4>Documentation improvements</h4>
<ul>
<li>Add hints on how to get GCC installed (#741) (<a href="https://github.com/rust-lang/rustlings/commit/bc5686174463ad6f4f6b824b0e9b97c3039d4886" rel="noopener noreferrer">bc56861</a>)</li>
<li>Fix some code blocks that were not highlighted (<a href="https://github.com/rust-lang/rustlings/commit/17f9d7429ccd133a72e815fb5618e0ce79560929" rel="noopener noreferrer">17f9d74</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.6.0">
<a href="4.6.0/">
Rustlings 4.6.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.6.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Sep 25 2021 at 09:27 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>add advanced_errs2 (<a href="https://github.com/rust-lang/rustlings/commit/abd6b70c72dc6426752ff41f09160b839e5c449e" rel="noopener noreferrer">abd6b70c</a>)</li>
<li>add advanced_errs1 (<a href="https://github.com/rust-lang/rustlings/commit/882d535ba8628d5e0b37e8664b3e2f26260b2671" rel="noopener noreferrer">882d535b</a>)</li>
<li>Add a farewell message when quitting <code>watch</code> (<a href="https://github.com/rust-lang/rustlings/commit/1caef0b43494c8b8cdd6c9260147e70d510f1aca" rel="noopener noreferrer">1caef0b4</a>)</li>
<li>add more watch commands (<a href="https://github.com/rust-lang/rustlings/commit/a7dc080b95e49146fbaafe6922a6de2f8cb1582a" rel="noopener noreferrer">a7dc080b</a>, closes <a href="https://github.com/rust-lang/rustlings/issues/842" rel="noopener noreferrer">#842</a>)</li>
<li><strong>modules:</strong> update exercises, add modules3 (#822) (<a href="https://github.com/rust-lang/rustlings/commit/dfd2fab4f33d1bf59e2e5ee03123c0c9a67a9481" rel="noopener noreferrer">dfd2fab4</a>)</li>
<li><strong>quiz1:</strong> add default function name in comment (#838) (<a href="https://github.com/rust-lang/rustlings/commit/0a11bad71402b5403143d642f439f57931278c07" rel="noopener noreferrer">0a11bad7</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>Correct small typo in exercises/conversions/from_str.rs (<a href="https://github.com/rust-lang/rustlings/commit/86cc85295ae36948963ae52882e285d7e3e29323" rel="noopener noreferrer">86cc8529</a>)</li>
<li><strong>cli:</strong> typo in exercise.rs (#848) (<a href="https://github.com/rust-lang/rustlings/commit/06d5c0973a3dffa3c6c6f70acb775d4c6630323c" rel="noopener noreferrer">06d5c097</a>)</li>
<li><strong>from_str, try_from_into:</strong> custom error types (<a href="https://github.com/rust-lang/rustlings/commit/2dc93caddad43821743e4903d89b355df58d7a49" rel="noopener noreferrer">2dc93cad</a>)</li>
<li><strong>modules2:</strong> fix typo (#835) (<a href="https://github.com/rust-lang/rustlings/commit/1c3beb0a59178c950dc05fe8ee2346b017429ae0" rel="noopener noreferrer">1c3beb0a</a>)</li>
<li><strong>move_semantics5:</strong>
<ul>
<li>change &amp;mut *y to &amp;mut x (#814) (<a href="https://github.com/rust-lang/rustlings/commit/d75759e829fdcd64ef071cf4b6eae2a011a7718b" rel="noopener noreferrer">d75759e8</a>)</li>
<li>Clarify instructions (<a href="https://github.com/rust-lang/rustlings/commit/df25684cb79f8413915e00b5efef29369849cef1" rel="noopener noreferrer">df25684c</a>)</li>
</ul>
</li>
<li><strong>quiz1:</strong> Fix inconsistent wording (#826) (<a href="https://github.com/rust-lang/rustlings/commit/03131a3d35d9842598150f9da817f7cc26e2669a" rel="noopener noreferrer">03131a3d</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.5.0">
<a href="4.5.0/">
Rustlings 4.5.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.5.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 7 2021 at 20:30 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Add move_semantics5 exercise. (#746) (<a href="https://github.com/rust-lang/rustlings/commit/399ab328d8d407265c09563aa4ef4534b2503ff2" rel="noopener noreferrer">399ab328</a>)</li>
<li><strong>cli:</strong> Add "next" to run the next unsolved exercise. (#785) (<a href="https://github.com/rust-lang/rustlings/commit/d20e413a68772cd493561f2651cf244e822b7ca5" rel="noopener noreferrer">d20e413a</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>rename result1 to errors4 (<a href="https://github.com/rust-lang/rustlings/commit/50ab289da6b9eb19a7486c341b00048c516b88c0" rel="noopener noreferrer">50ab289d</a>)</li>
<li>move_semantics5 hints (<a href="https://github.com/rust-lang/rustlings/commit/1b85828548f46f58b622b5e0c00f8c989f928807" rel="noopener noreferrer">1b858285</a>)</li>
<li>remove trailing whitespaces from iterators1 (<a href="https://github.com/rust-lang/rustlings/commit/4d4fa77459392acd3581c6068aa8be9a02de12fc" rel="noopener noreferrer">4d4fa774</a>)</li>
<li>add hints to generics1 and generics2 exercises (<a href="https://github.com/rust-lang/rustlings/commit/31457940846b3844d78d4a4d2b074bc8d6aaf1eb" rel="noopener noreferrer">31457940</a>)</li>
<li>remove trailing whitespace (<a href="https://github.com/rust-lang/rustlings/commit/d9b69bd1a0a7a99f2c0d80933ad2eea44c8c71b2" rel="noopener noreferrer">d9b69bd1</a>)</li>
<li><strong>installation:</strong> first PowerShell command (<a href="https://github.com/rust-lang/rustlings/commit/aa9a943ddf3ae260782e73c26bcc9db60e5894b6" rel="noopener noreferrer">aa9a943d</a>)</li>
<li><strong>iterators5:</strong> derive Clone, Copy (<a href="https://github.com/rust-lang/rustlings/commit/91fc9e3118f4af603c9911698cc2a234725cb032" rel="noopener noreferrer">91fc9e31</a>)</li>
<li><strong>quiz1:</strong> Updated question description (#794) (<a href="https://github.com/rust-lang/rustlings/commit/d876649616cc8a8dd5f539f8bc1a5434b960b1e9" rel="noopener noreferrer">d8766496</a>)</li>
<li><strong>try_from_into, from_str:</strong> hints for dyn Error (<a href="https://github.com/rust-lang/rustlings/commit/11d2cf0d604dee3f5023c17802d69438e69fa50e" rel="noopener noreferrer">11d2cf0d</a>)</li>
<li><strong>variables5:</strong> confine the answer further (<a href="https://github.com/rust-lang/rustlings/commit/48ffcbd2c4cc4d936c2c7480019190f179813cc5" rel="noopener noreferrer">48ffcbd2</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.4.0">
<a href="4.4.0/">
Rustlings 4.4.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.4.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 24 2021 at 10:04 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Fix spelling error in main.rs (<a href="https://github.com/rust-lang/rustlings/commit/91ee27f22bd3797a9db57e5fd430801c170c5db8" rel="noopener noreferrer">91ee27f2</a>)</li>
<li>typo in default out text (<a href="https://github.com/rust-lang/rustlings/commit/644c49f1e04cbb24e95872b3a52b07d692ae3bc8" rel="noopener noreferrer">644c49f1</a>)</li>
<li><strong>collections:</strong> Naming exercises for vectors and hashmap (<a href="https://github.com/rust-lang/rustlings/commit/bef39b125961310b34b34871e480a82e82af4678" rel="noopener noreferrer">bef39b12</a>)</li>
<li><strong>from_str:</strong>
<ul>
<li>Correct typos (<a href="https://github.com/rust-lang/rustlings/commit/5f7c89f85db1f33da01911eaa479c3a2d4721678" rel="noopener noreferrer">5f7c89f8</a>)</li>
<li>test for error instead of unwrap/should_panic (<a href="https://github.com/rust-lang/rustlings/commit/15e71535f37cfaed36e22eb778728d186e2104ab" rel="noopener noreferrer">15e71535</a>)</li>
<li>use trait objects for from_str (<a href="https://github.com/rust-lang/rustlings/commit/c3e7b831786c9172ed8bd5d150f3c432f242fba9" rel="noopener noreferrer">c3e7b831</a>)</li>
</ul>
</li>
<li><strong>functions3:</strong> improve function argument type (#687) (<a href="https://github.com/rust-lang/rustlings/commit/a6509cc4d545d8825f01ddf7ee37823b372154dd" rel="noopener noreferrer">a6509cc4</a>)</li>
<li><strong>hashmap2:</strong> Update incorrect assertion (#660) (<a href="https://github.com/rust-lang/rustlings/commit/72aaa15e6ab4b72b3422f1c6356396e20a2a2bb8" rel="noopener noreferrer">72aaa15e</a>)</li>
<li><strong>info:</strong> Fix typo (#635) (<a href="https://github.com/rust-lang/rustlings/commit/cddc1e86e7ec744ee644cc774a4887b1a0ded3e8" rel="noopener noreferrer">cddc1e86</a>)</li>
<li><strong>iterators2:</strong> Moved errors out of tests. (<a href="https://github.com/rust-lang/rustlings/commit/baf4ba175ba6eb92989e3dd54ecbec4bedc9a863" rel="noopener noreferrer">baf4ba17</a>, closes <a href="https://github.com/rust-lang/rustlings/issues/359" rel="noopener noreferrer">#359</a>)</li>
<li><strong>iterators3:</strong> Enabled iterators3.rs to run without commented out tests. (<a href="https://github.com/rust-lang/rustlings/commit/c6712dfccd1a093e590ad22bbc4f49edc417dac0" rel="noopener noreferrer">c6712dfc</a>)</li>
<li><strong>main:</strong> Let find_exercise work with borrows (<a href="https://github.com/rust-lang/rustlings/commit/347f30bd867343c5ace1097e085a1f7e356553f7" rel="noopener noreferrer">347f30bd</a>)</li>
<li><strong>move_semantics4:</strong>
<ul>
<li>Remove redundant "instead" (#640) (<a href="https://github.com/rust-lang/rustlings/commit/cc266d7d80b91e79df3f61984f231b7f1587218e" rel="noopener noreferrer">cc266d7d</a>)</li>
<li>Small readbility improvement (#617) (<a href="https://github.com/rust-lang/rustlings/commit/10965920fbdf8a1efc85bed869e55a1787006404" rel="noopener noreferrer">10965920</a>)</li>
</ul>
</li>
<li><strong>option2:</strong> Rename uninformative variables (#675) (<a href="https://github.com/rust-lang/rustlings/commit/b4de6594380636817d13c2677ec6f472a964cf43" rel="noopener noreferrer">b4de6594</a>)</li>
<li><strong>quiz3:</strong> Force an answer to Q2 (#672) (<a href="https://github.com/rust-lang/rustlings/commit/0d894e6ff739943901e1ae8c904582e5c2f843bd" rel="noopener noreferrer">0d894e6f</a>)</li>
<li><strong>structs:</strong> Add 5.3 to structs/README (#652) (<a href="https://github.com/rust-lang/rustlings/commit/6bd791f2f44aa7f0ad926df767f6b1fa8f12a9a9" rel="noopener noreferrer">6bd791f2</a>)</li>
<li><strong>structs2:</strong> correct grammar in hint (#663) (<a href="https://github.com/rust-lang/rustlings/commit/ebdb66c7bfb6d687a14cc511a559a222e6fc5de4" rel="noopener noreferrer">ebdb66c7</a>)</li>
<li><strong>structs3:</strong>
<ul>
<li>reword heading comment (#664) (<a href="https://github.com/rust-lang/rustlings/commit/9f3e8c2dde645e5264c2d2200e68842b5f47bfa3" rel="noopener noreferrer">9f3e8c2d</a>)</li>
<li>add check to prevent naive implementation of is_international (<a href="https://github.com/rust-lang/rustlings/commit/05a753fe6333d36dbee5f68c21dec04eacdc75df" rel="noopener noreferrer">05a753fe</a>)</li>
</ul>
</li>
<li><strong>threads1:</strong> line number correction (<a href="https://github.com/rust-lang/rustlings/commit/7857b0a689b0847f48d8c14cbd1865e3b812d5ca" rel="noopener noreferrer">7857b0a6</a>)</li>
<li><strong>try_from_into:</strong> use trait objects (<a href="https://github.com/rust-lang/rustlings/commit/2e93a588e0abe8badb7eafafb9e7d073c2be5df8" rel="noopener noreferrer">2e93a588</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Replace clap with argh (<a href="https://github.com/rust-lang/rustlings/commit/7928122fcef9ca7834d988b1ec8ca0687478beeb" rel="noopener noreferrer">7928122f</a>)</li>
<li>Replace emojis when NO_EMOJI env variable present (<a href="https://github.com/rust-lang/rustlings/commit/8d62a9963708dbecd9312e8bcc4b47049c72d155" rel="noopener noreferrer">8d62a996</a>)</li>
<li>Added iterators5.rs exercise. (<a href="https://github.com/rust-lang/rustlings/commit/b29ea17ea94d1862114af2cf5ced0e09c197dc35" rel="noopener noreferrer">b29ea17e</a>)</li>
<li><strong>arc1:</strong> Add more details to description and hint (#710) (<a href="https://github.com/rust-lang/rustlings/commit/81be40448777fa338ebced3b0bfc1b32d6370313" rel="noopener noreferrer">81be4044</a>)</li>
<li><strong>cli:</strong> Improve the list command with options, and then some (<a href="https://github.com/rust-lang/rustlings/commit/8bbe4ff1385c5c169c90cd3ff9253f9a91daaf8e" rel="noopener noreferrer">8bbe4ff1</a>)</li>
<li><strong>list:</strong>
<ul>
<li>updated progress percentage (<a href="https://github.com/rust-lang/rustlings/commit/1c6f7e4b7b9b3bd36f4da2bb2b69c549cc8bd913" rel="noopener noreferrer">1c6f7e4b</a>)</li>
<li>added progress info (<a href="https://github.com/rust-lang/rustlings/commit/c0e3daacaf6850811df5bc57fa43e0f249d5cfa4" rel="noopener noreferrer">c0e3daac</a>)</li>
</ul>
</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.3.0">
<a href="4.3.0/">
Rustlings 4.3.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.3.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Dec 29 2020 at 10:41 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Rewrite default out text (<a href="https://github.com/rust-lang/rustlings/commit/44d39112ff122b29c9793fe52e605df1612c6490" rel="noopener noreferrer">44d39112</a>)</li>
<li>match exercise order to book chapters (#541) (<a href="https://github.com/rust-lang/rustlings/commit/033bf1198fc8bfce1b570e49da7cde010aa552e3" rel="noopener noreferrer">033bf119</a>)</li>
<li>Crab? (#586) (<a href="https://github.com/rust-lang/rustlings/commit/fa9f522b7f043d7ef73a39f003a9272dfe72c4f4" rel="noopener noreferrer">fa9f522b</a>)</li>
<li>add "rustlings list" command (<a href="https://github.com/rust-lang/rustlings/commit/838f9f30083d0b23fd67503dcf0fbeca498e6647" rel="noopener noreferrer">838f9f30</a>)</li>
<li><strong>try_from_into:</strong> remove duplicate annotation (<a href="https://github.com/rust-lang/rustlings/commit/04f1d079aa42a2f49af694bc92c67d731d31a53f" rel="noopener noreferrer">04f1d079</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>update structs README (<a href="https://github.com/rust-lang/rustlings/commit/bcf14cf677adb3a38a3ac3ca53f3c69f61153025" rel="noopener noreferrer">bcf14cf6</a>)</li>
<li>added missing exercises to info.toml (<a href="https://github.com/rust-lang/rustlings/commit/90cfb6ff28377531bfc34acb70547bdb13374f6b" rel="noopener noreferrer">90cfb6ff</a>)</li>
<li>gives a bit more context to magic number (<a href="https://github.com/rust-lang/rustlings/commit/30644c9a062b825c0ea89435dc59f0cad86b110e" rel="noopener noreferrer">30644c9a</a>)</li>
<li><strong>functions2:</strong> Change signature to trigger precise error message: (#605) (<a href="https://github.com/rust-lang/rustlings/commit/0ef95947cc30482e63a7045be6cc2fb6f6dcb4cc" rel="noopener noreferrer">0ef95947</a>)</li>
<li><strong>structs1:</strong> Adjust wording (#573) (<a href="https://github.com/rust-lang/rustlings/commit/9334783da31d821cc59174fbe8320df95828926c" rel="noopener noreferrer">9334783d</a>)</li>
<li><strong>try_from_into:</strong>
<ul>
<li>type error (<a href="https://github.com/rust-lang/rustlings/commit/4f4cfcf3c36c8718c7c170c9c3a6935e6ef0618c" rel="noopener noreferrer">4f4cfcf3</a>)</li>
<li>Update description (#584) (<a href="https://github.com/rust-lang/rustlings/commit/96347df9df294f01153b29d9ad4ba361f665c755" rel="noopener noreferrer">96347df9</a>)</li>
</ul>
</li>
<li><strong>vec1:</strong> Have test compare every element in a and v (<a href="https://github.com/rust-lang/rustlings/commit/9b6c629397b24b944f484f5b2bbd8144266b5695" rel="noopener noreferrer">9b6c6293</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.2.0">
<a href="4.2.0/">
Rustlings 4.2.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Nov 7 2020 at 13:22 UTC
</span>
</div>
<div class="release-body">
<h4>Features</h4>
<ul>
<li>Add HashMap exercises (<a href="https://github.com/rust-lang/rustlings/commit/633c00cf8071e1e82959a3010452a32f34f29fc9" rel="noopener noreferrer">633c00cf</a>)</li>
<li>Add Vec exercises (<a href="https://github.com/rust-lang/rustlings/commit/0c12fa31c57c03c6287458a0a8aca7afd057baf6" rel="noopener noreferrer">0c12fa31</a>)</li>
<li><strong>primitive_types6:</strong> Add a test (#548) (<a href="https://github.com/rust-lang/rustlings/commit/2b1fb2b739bf9ad8d6b7b12af25fee173011bfc4" rel="noopener noreferrer">2b1fb2b7</a>)</li>
<li><strong>try_from_into:</strong> Add tests (#571) (<a href="https://github.com/rust-lang/rustlings/commit/95ccd92616ae79ba287cce221101e0bbe4f68cdc" rel="noopener noreferrer">95ccd926</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>log error output when inotify limit is exceeded (<a href="https://github.com/rust-lang/rustlings/commit/d61b4e5a13b44d72d004082f523fa1b6b24c1aca" rel="noopener noreferrer">d61b4e5a</a>)</li>
<li>more unique temp_file (<a href="https://github.com/rust-lang/rustlings/commit/5643ef05bc81e4a840e9456f4406a769abbe1392" rel="noopener noreferrer">5643ef05</a>)</li>
<li><strong>installation:</strong> Update the MinRustVersion (<a href="https://github.com/rust-lang/rustlings/commit/21bfb2d4777429c87d8d3b5fbf0ce66006dcd034" rel="noopener noreferrer">21bfb2d4</a>)</li>
<li><strong>iterators2:</strong> Update description (#578) (<a href="https://github.com/rust-lang/rustlings/commit/197d3a3d8961b2465579218a6749b2b2cefa8ddd" rel="noopener noreferrer">197d3a3d</a>)</li>
<li><strong>primitive_types6:</strong>
<ul>
<li>remove 'unused doc comment' warning (<a href="https://github.com/rust-lang/rustlings/commit/472d8592d65c8275332a20dfc269e7ac0d41bc88" rel="noopener noreferrer">472d8592</a>)</li>
<li>missing comma in test (<a href="https://github.com/rust-lang/rustlings/commit/4fb230daf1251444fcf29e085cee222a91f8a37e" rel="noopener noreferrer">4fb230da</a>)</li>
</ul>
</li>
<li><strong>quiz3:</strong> Second test is for odd numbers, not even. (#553) (<a href="https://github.com/rust-lang/rustlings/commit/18e0bfef1de53071e353ba1ec5837002ff7290e6" rel="noopener noreferrer">18e0bfef</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.1.0">
<a href="4.1.0/">
Rustlings 4.1.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.1.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Oct 5 2020 at 16:45 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Update rustlings version in Cargo.lock (<a href="https://github.com/rust-lang/rustlings/commit/1cc40bc9ce95c23d56f6d91fa1c4deb646231fef" rel="noopener noreferrer">1cc40bc9</a>)</li>
<li><strong>arc1:</strong> index mod should equal thread count (<a href="https://github.com/rust-lang/rustlings/commit/b4062ef6993e80dac107c4093ea85166ad3ee0fa" rel="noopener noreferrer">b4062ef6</a>)</li>
<li><strong>enums3:</strong> Update Message::ChangeColor to take a tuple. (#457) (<a href="https://github.com/rust-lang/rustlings/commit/4b6540c71adabad647de8a09e57295e7c7c7d794" rel="noopener noreferrer">4b6540c7</a>)</li>
<li><strong>exercises:</strong> adding question mark to quiz2 (<a href="https://github.com/rust-lang/rustlings/commit/101072ab9f8c80b40b8b88cb06cbe38aca2481c5" rel="noopener noreferrer">101072ab</a>)</li>
<li><strong>generics3:</strong> clarify grade change (<a href="https://github.com/rust-lang/rustlings/commit/47f7672c0307732056e7426e81d351f0dd7e22e5" rel="noopener noreferrer">47f7672c</a>)</li>
<li><strong>structs3:</strong> Small adjustment of variable name (<a href="https://github.com/rust-lang/rustlings/commit/114b54cbdb977234b39e5f180d937c14c78bb8b2" rel="noopener noreferrer">114b54cb</a>)</li>
<li><strong>using_as:</strong> Add test so that proper type is returned. (#512) (<a href="https://github.com/rust-lang/rustlings/commit/3286c5ec19ea5fb7ded81d047da5f8594108a490" rel="noopener noreferrer">3286c5ec</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Added iterators1.rs exercise (<a href="https://github.com/rust-lang/rustlings/commit/9642f5a3f686270a4f8f6ba969919ddbbc4f7fdd" rel="noopener noreferrer">9642f5a3</a>)</li>
<li>Add ability to run rustlings on repl.it (#471) (<a href="https://github.com/rust-lang/rustlings/commit/8f7b5bd00eb83542b959830ef55192d2d76db90a" rel="noopener noreferrer">8f7b5bd0</a>)</li>
<li>Add gitpod support (#473) (<a href="https://github.com/rust-lang/rustlings/commit/4821a8be94af4f669042a06ab917934cfacd032f" rel="noopener noreferrer">4821a8be</a>)</li>
<li>Remind the user of the hint option (#425) (<a href="https://github.com/rust-lang/rustlings/commit/816b1f5e85d6cc6e72673813a85d0ada2a8f84af" rel="noopener noreferrer">816b1f5e</a>)</li>
<li>Remind the user of the hint option (#425) (<a href="https://github.com/rust-lang/rustlings/commit/9f61db5dbe38538cf06571fcdd5f806e7901e83a" rel="noopener noreferrer">9f61db5d</a>)</li>
<li><strong>cli:</strong> Added 'cls' command to 'watch' mode (#474) (<a href="https://github.com/rust-lang/rustlings/commit/4f2468e14f574a93a2e9b688367b5752ed96ae7b" rel="noopener noreferrer">4f2468e1</a>)</li>
<li><strong>try_from_into:</strong> Add insufficient length test (#469) (<a href="https://github.com/rust-lang/rustlings/commit/523d18b873a319f7c09262f44bd40e2fab1830e5" rel="noopener noreferrer">523d18b8</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-4.0.0">
<a href="4.0.0/">
Rustlings 4.0.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
4.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 8 2020 at 09:41 UTC
</span>
</div>
<div class="release-body">
<h4>Breaking Changes</h4>
<ul>
<li>Add a --nocapture option to display test harnesses' outputs (<a href="https://github.com/rust-lang/rustlings/commit/8ad5f9bf531a4848b1104b7b389a20171624c82f" rel="noopener noreferrer">8ad5f9bf</a>)</li>
<li>Rename test to quiz, fixes #244 (<a href="https://github.com/rust-lang/rustlings/commit/010a04569282149cea7f7a76fc4d7f4c9f0f08dd" rel="noopener noreferrer">010a0456</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Add traits README (<a href="https://github.com/rust-lang/rustlings/commit/173bb14140c5530cbdb59e53ace3991a99d804af" rel="noopener noreferrer">173bb141</a>)</li>
<li>Add box1.rs exercise (<a href="https://github.com/rust-lang/rustlings/commit/7479a4737bdcac347322ad0883ca528c8675e720" rel="noopener noreferrer">7479a473</a>)</li>
<li>Rewrite try_from_into (#393) (<a href="https://github.com/rust-lang/rustlings/commit/763aa6e378a586caae2d8d63755a85eeba227933" rel="noopener noreferrer">763aa6e3</a>)</li>
<li>Add if2 exercise (<a href="https://github.com/rust-lang/rustlings/commit/1da84b5f7c489f65bd683c244f13c7d1ee812df0" rel="noopener noreferrer">1da84b5f</a>)</li>
<li>Added exercise structs3.rs (<a href="https://github.com/rust-lang/rustlings/commit/b66e2e09622243e086a0f1258dd27e1a2d61c891" rel="noopener noreferrer">b66e2e09</a>)</li>
<li>Add exercise variables6 covering const (#352) (<a href="https://github.com/rust-lang/rustlings/commit/5999acd24a4f203292be36e0fd18d385887ec481" rel="noopener noreferrer">5999acd2</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li>Change then to than (<a href="https://github.com/rust-lang/rustlings/commit/ddd98ad75d3668fbb10eff74374148aa5ed2344d" rel="noopener noreferrer">ddd98ad7</a>)</li>
<li>rename quiz1 to tests1 in info (#420) (<a href="https://github.com/rust-lang/rustlings/commit/0dd1c6ca6b389789e0972aa955fe17aa15c95f29" rel="noopener noreferrer">0dd1c6ca</a>)</li>
<li>fix quiz naming inconsistency (#421) (<a href="https://github.com/rust-lang/rustlings/commit/5563adbb890587fc48fbbc9c4028642687f1e85b" rel="noopener noreferrer">5563adbb</a>)</li>
<li>confine the user further in variable exercises (<a href="https://github.com/rust-lang/rustlings/commit/06ef4cc654e75d22a526812919ee49b8956280bf" rel="noopener noreferrer">06ef4cc6</a>)</li>
<li>update iterator and macro text for typos and clarity (<a href="https://github.com/rust-lang/rustlings/commit/959008284834bece0196a01e17ac69a7e3590116" rel="noopener noreferrer">95900828</a>)</li>
<li>update generics2 closes #362 (<a href="https://github.com/rust-lang/rustlings/commit/964c974a0274199d755073b917c2bc5da0c9b4f1" rel="noopener noreferrer">964c974a</a>)</li>
<li>confusing comment in conversions/try_from_into.rs (<a href="https://github.com/rust-lang/rustlings/commit/c9e4f2cfb4c48d0b7451263cfb43b9426438122d" rel="noopener noreferrer">c9e4f2cf</a>)</li>
<li><strong>arc1:</strong> Passively introduce attributes (#429) (<a href="https://github.com/rust-lang/rustlings/commit/113cdae2d4e4c55905e8056ad326ede7fd7de356" rel="noopener noreferrer">113cdae2</a>)</li>
<li><strong>box1:</strong> fix comment typo (#426) (<a href="https://github.com/rust-lang/rustlings/commit/bb2ca251106b27a7272d9a30872904dd1376654c" rel="noopener noreferrer">bb2ca251</a>)</li>
<li><strong>errorsn:</strong> Try harder to confine the user. (#388) (<a href="https://github.com/rust-lang/rustlings/commit/2b20c8a0f5774d07c58d110d75879f33fc6273b5" rel="noopener noreferrer">2b20c8a0</a>)</li>
<li><strong>from_into.rs:</strong> typo (<a href="https://github.com/rust-lang/rustlings/commit/a901499ededd3ce1995164700514fe4e9a0373ea" rel="noopener noreferrer">a901499e</a>)</li>
<li><strong>generics2:</strong> Guide students to the answer (#430) (<a href="https://github.com/rust-lang/rustlings/commit/e6bd8021d9a7dd06feebc30c9d5f953901d7b419" rel="noopener noreferrer">e6bd8021</a>)</li>
<li><strong>installation:</strong>
<ul>
<li>Provide a backup git reference when tag can't be curl (<a href="https://github.com/rust-lang/rustlings/commit/9e4fb1009f1c9e3433915c03e22c2af422e5c5fe" rel="noopener noreferrer">9e4fb100</a>)</li>
<li>Check if python is available while checking for git,rustc and cargo (<a href="https://github.com/rust-lang/rustlings/commit/9cfb617d5b0451b4b51644a1298965390cda9884" rel="noopener noreferrer">9cfb617d</a>)</li>
</ul>
</li>
<li><strong>option1:</strong>
<ul>
<li>Don't add only zeros to the numbers array (<a href="https://github.com/rust-lang/rustlings/commit/cce6a4427718724a9096800754cd3abeca6a1580" rel="noopener noreferrer">cce6a442</a>)</li>
<li>Add cast to usize, as it is confusing in the context of an exercise about Option (<a href="https://github.com/rust-lang/rustlings/commit/f6cffc7e487b42f15a6f958e49704c93a8d4465b" rel="noopener noreferrer">f6cffc7e</a>)</li>
</ul>
</li>
<li><strong>option2:</strong> Add TODO to comments (#400) (<a href="https://github.com/rust-lang/rustlings/commit/10967bce57682812dc0891a9f9757da1a9d87404" rel="noopener noreferrer">10967bce</a>)</li>
<li><strong>options1:</strong> Add hint about Array Initialization (#389) (<a href="https://github.com/rust-lang/rustlings/commit/9f75554f2a30295996f03f0160b98c0458305502" rel="noopener noreferrer">9f75554f</a>)</li>
<li><strong>test2:</strong> name of type String and &amp;str (#394) (<a href="https://github.com/rust-lang/rustlings/commit/d6c0a688e6a96f93ad60d540d4b326f342fc0d45" rel="noopener noreferrer">d6c0a688</a>)</li>
<li><strong>variables6:</strong> minor typo (#419) (<a href="https://github.com/rust-lang/rustlings/commit/524e17df10db95f7b90a0f75cc8997182a8a4094" rel="noopener noreferrer">524e17df</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-3.0.0">
<a href="3.0.0/">
Rustlings 3.0.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
3.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Apr 11 2020 at 22:04 UTC
</span>
</div>
<div class="release-body">
<h4>Breaking Changes</h4>
<ul>
<li>make "compile" exercises print output (#278) (<a href="https://github.com/fmoko/rustlings/commit/3b6d5c3aaa27a242a832799eb66e96897d26fde3" rel="noopener noreferrer">3b6d5c</a>)</li>
</ul>
<h4>Bug Fixes</h4>
<ul>
<li><strong>primitive_types:</strong> revert primitive_types4 (#296) (<a href="https://github.com/rust-lang/rustlings/commit/b3a3351e8e6a0bdee07077d7b0382953821649ae" rel="noopener noreferrer">b3a3351e</a>)</li>
<li><strong>run:</strong> compile clippy exercise files (#295) (<a href="https://github.com/rust-lang/rustlings/commit/3ab084a421c0f140ae83bf1fc3f47b39342e7373" rel="noopener noreferrer">3ab084a4</a>)</li>
<li><strong>conversions:</strong>
<ul>
<li>add additional test to meet exercise rules (#284) (<a href="https://github.com/fmoko/rustlings/commit/bc22ec382f843347333ef1301fc1bad773657f38" rel="noopener noreferrer">bc22ec3</a>)</li>
<li>remove duplicate not done comment (#292) (<a href="https://github.com/fmoko/rustlings/commit/dab90f7b91a6000fe874e3d664f244048e5fa342" rel="noopener noreferrer">dab90f</a>)</li>
</ul>
</li>
<li>don't hardcode documentation version for traits (#288) (<a href="https://github.com/fmoko/rustlings/commit/30e6af60690c326fb5d3a9b7335f35c69c09137d" rel="noopener noreferrer">30e6af</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>add Option2 exercise (#290) (<a href="https://github.com/rust-lang/rustlings/commit/86b5c08b9bea1576127a7c5f599f5752072c087d" rel="noopener noreferrer">86b5c08b</a>)</li>
<li>add exercise for option (#282) (<a href="https://github.com/rust-lang/rustlings/commit/135e5d47a7c395aece6f6022117fb20c82f2d3d4" rel="noopener noreferrer">135e5d47</a>)</li>
<li>add new exercises for generics (#280) (<a href="https://github.com/rust-lang/rustlings/commit/76be5e4e991160f5fd9093f03ee2ba260e8f7229" rel="noopener noreferrer">76be5e4e</a>)</li>
<li><strong>ci:</strong> add buildkite config (<a href="https://github.com/rust-lang/rustlings/commit/b049fa2c84dba0f0c8906ac44e28fd45fba51a71" rel="noopener noreferrer">b049fa2c</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
<h3>2.2.1 (2020-02-27)</h3>
<h4>Bug Fixes</h4>
<ul>
<li>Re-add cloning the repo to install scripts (<a href="https://github.com/rust-lang/rustlings/commit/3d9b03c52b8dc51b140757f6fd25ad87b5782ef5" rel="noopener noreferrer">3d9b03c5</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li>Add clippy lints (#269) (<a href="https://github.com/rust-lang/rustlings/commit/1e2fd9c92f8cd6e389525ca1a999fca4c90b5921" rel="noopener noreferrer">1e2fd9c9</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
<section class="release ">
<h2 id="tag-2.2.1">
<a href="2.2.1/">
Rustlings 2.2.1
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
2.2.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Feb 27 2020 at 18:24 UTC
</span>
</div>
<div class="release-body">
</div>
</section>
<section class="release ">
<h2 id="tag-2.2.0">
<a href="2.2.0/">
Rustlings 2.2.0
</a>
</h2>
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
2.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Feb 25 2020 at 22:09 UTC
</span>
</div>
<div class="release-body">
<h4>Bug Fixes</h4>
<ul>
<li>Update deps to version compatable with aarch64-pc-windows (#263) (<a href="https://github.com/rust-lang/rustlings/commit/19a93428b3c73d994292671f829bdc8e5b7b3401" rel="noopener noreferrer">19a93428</a>)</li>
<li><strong>docs:</strong>
<ul>
<li>Added a necessary step to Windows installation process (#242) (<a href="https://github.com/rust-lang/rustlings/commit/3906efcd52a004047b460ed548037093de3f523f" rel="noopener noreferrer">3906efcd</a>)</li>
<li>Fixed mangled sentence from book; edited for clarity (#266) (<a href="https://github.com/rust-lang/rustlings/commit/ade52ffb739987287ddd5705944c8777705faed9" rel="noopener noreferrer">ade52ff</a>)</li>
<li>Updated iterators readme to account for iterators4 exercise (#273) (<a href="https://github.com/rust-lang/rustlings/commit/bec8e3a644cbd88db1c73ea5f1d8a364f4a34016" rel="noopener noreferrer">bec8e3a</a>)</li>
</ul>
</li>
<li><strong>installation:</strong> make fatal errors more obvious (#272) (<a href="https://github.com/rust-lang/rustlings/commit/17d0951e66fda8e11b204d5c4c41a0d5e22e78f7" rel="noopener noreferrer">17d0951e</a>)</li>
<li><strong>iterators2:</strong>
<ul>
<li>Remove reference to missing iterators2.rs (#245) (<a href="https://github.com/rust-lang/rustlings/commit/419f7797f294e4ce6a2b883199731b5bde77d262" rel="noopener noreferrer">419f7797</a>)</li>
</ul>
</li>
<li><strong>as_ref_mut:</strong> Enable a test and improve per clippy's suggestion (#256) (<a href="https://github.com/rust-lang/rustlings/commit/dfdf8093ebbd4145864995627b812780de52f902" rel="noopener noreferrer">dfdf809</a>)</li>
<li><strong>tests1:</strong>
<ul>
<li>Change test command (<a href="https://github.com/rust-lang/rustlings/commit/fe10e06c3733ddb4a21e90d09bf79bfe618e97ce" rel="noopener noreferrer">fe10e06c</a></li>
<li>Correct test command in tests1.rs comment (#263) (<a href="https://github.com/rust-lang/rustlings/commit/39fa7ae8b70ad468da49b06f11b2383135a63bcf" rel="noopener noreferrer">39fa7ae</a>)</li>
</ul>
</li>
</ul>
<h4>Features</h4>
<ul>
<li>Add variables5.rs exercise (#264) (<a href="https://github.com/rust-lang/rustlings/commit/0c73609e6f2311295e95d6f96f8c747cfc4cba03" rel="noopener noreferrer">0c73609e</a>)</li>
<li>Show a completion message when watching (#253) (<a href="https://github.com/rust-lang/rustlings/commit/d25ee55a3205882d35782e370af855051b39c58c" rel="noopener noreferrer">d25ee55a</a>)</li>
<li>Add type conversion and parsing exercises (#249) (<a href="https://github.com/rust-lang/rustlings/commit/0c85dc1193978b5165491b99cc4922caf8d14a65" rel="noopener noreferrer">0c85dc11</a>)</li>
<li>Created consistent money unit (#258) (<a href="https://github.com/rust-lang/rustlings/commit/fd57f8f2c1da2af8ddbebbccec214e6f40f4dbab" rel="noopener noreferrer">fd57f8f</a>)</li>
<li>Enable test for exercise test4 (#276) (<a href="https://github.com/rust-lang/rustlings/commit/8b971ffab6079a706ac925f5917f987932b55c07" rel="noopener noreferrer">8b971ff</a>)</li>
<li>Added traits exercises (#274 but specifically #216, which originally added
this :heart:) (<a href="https://github.com/rust-lang/rustlings/commit/b559cdd73f32c0d0cfc1feda39f82b3e3583df17" rel="noopener noreferrer">b559cdd</a>)</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
<script src="/artifacts.js"></script>
</body>
</html>

157
changelog/v6.0.0/index.html Normal file
View File

@ -0,0 +1,157 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 6.0.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.0.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 3 2024 at 13:43 UTC
</span>
</div>
<div class="release-body">
<p>This release is the result of a complete rewrite to deliver a ton of new features and improvements ✨
The most important changes are highlighted below.</p>
<h3>Installation</h3>
<p>The installation has been simplified a lot!
To install Rustlings after installing Rust, all what you need to do now is running the following command:</p>
<pre style="background-color:#263238;"><span style="color:#82aaff;">cargo install rustlings
</span></pre>
<p>Yes, this means that Rustlings is now on <a href="https://crates.io/crates/rustlings" rel="noopener noreferrer">crates.io</a> 🎉</p>
<p>You can read about the motivations of this change in <a href="https://github.com/rust-lang/rustlings/issues/1919" rel="noopener noreferrer">this issue</a>.</p>
<h3>UI/UX</h3>
<ul>
<li>The UI is now responsive when the terminal is resized.</li>
<li>The progress bar was moved to the bottom so that you can always see your progress and the current exercise to work on.</li>
<li>The current exercise path is now a terminal link. It will open the exercise file in your default editor when you click on it.</li>
<li>A small prompt is now always shown at the bottom. It allows you to choose an action by entering a character. For example, entering <code>h</code> will show you the hint of the current exercise.</li>
<li>The comment "I AM NOT DONE!" doesn't exist anymore. Instead of needing to remove it to go to the next exercise, you need to enter <code>n</code> in the terminal.</li>
</ul>
<h3>List mode</h3>
<p>A list mode was added using <a href="https://ratatui.rs" rel="noopener noreferrer">Ratatui</a>.
You can enter it by entering <code>l</code> in the watch mode.
It offers the following features:</p>
<ul>
<li>Browse all exercises and see their state (pending/done).</li>
<li>Filter exercises based on their state (pending/done).</li>
<li>Continue at another exercise. This allows you to skip some exercises or go back to previous ones.</li>
<li>Reset an exercise so you can start over and revert your changes.</li>
</ul>
<h3>Solutions</h3>
<p>After finishing an exercise, a solution file will be available and Rustlings will show you its path in green.
This allows you to compare your solution with an idiomatic solution and maybe learn about other ways to solve a problem.</p>
<p>While writing the solutions, all exercises have been polished 🌟
For example, every exercise now contains <code>TODO</code> comments to highlight what the user needs to change and where.</p>
<h3>LSP support out of the box</h3>
<p>Instead of creating a <code>project.json</code> file using <code>rustlings lsp</code>, Rustlings now works with a <code>Cargo.toml</code> file out of the box.
No actions are needed to activate the language server <code>rust-analyzer</code>.</p>
<p>This should avoid issues related to the language server or to running exercises, especially the ones with Clippy.</p>
<h3>Clippy</h3>
<p>Clippy lints are now shown on all exercises, not only the Clippy exercises 📎
Make Clippy your friend from early on 🥰</p>
<h3>Third-party exercises</h3>
<p>Rustlings now supports third-party exercises!</p>
<p>Do you want to create your own set of Rustlings exercises to focus on some specific topic?
Or do you want to translate the original Rustlings exercises?
Then follow the link to the guide about <a href="THIRD_PARTY_EXERCISES.md" rel="noopener noreferrer">third-party exercises</a>!</p>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

114
changelog/v6.0.1/index.html Normal file
View File

@ -0,0 +1,114 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 6.0.1</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.0.1
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 4 2024 at 18:04 UTC
</span>
</div>
<div class="release-body">
<p>Small exercise improvements and fixes.
Most importantly, fixed that the exercise <code>clippy1</code> was already solved 😅</p>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

127
changelog/v6.1.0/index.html Normal file
View File

@ -0,0 +1,127 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 6.1.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.1.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Jul 10 2024 at 14:55 UTC
</span>
</div>
<div class="release-body">
<h4>Added</h4>
<ul>
<li><code>dev check</code>: Check that all exercises (including third-party ones) include at least one <code>TODO</code> comment.</li>
<li><code>dev check</code>: Check that all exercises actually fail to run (not already solved).</li>
</ul>
<h4>Changed</h4>
<ul>
<li>Make enum variants more consistent between enum exercises.</li>
<li><code>iterators3</code>: Teach about the possible case of integer overflow during division.</li>
</ul>
<h4>Fixed</h4>
<ul>
<li>Exit with a helpful error message on missing/unsupported terminal/TTY.</li>
<li>Mark the last exercise as done.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

126
changelog/v6.2.0/index.html Normal file
View File

@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 6.2.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.2.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 9 2024 at 09:59 UTC
</span>
</div>
<div class="release-body">
<h3>Added</h3>
<ul>
<li>Show a message before checking and running an exercise. This gives the user instant feedback and avoids confusion if the checks take too long.</li>
<li>Show a helpful error message when trying to install Rustlings with a Rust version lower than the minimum one that Rustlings supports.</li>
<li>Add a <code>README.md</code> file to the <code>solutions/</code> directory.</li>
<li>Allow initializing Rustlings in a Cargo workspace.</li>
<li><code>dev check</code>: Check that all solutions are formatted with <code>rustfmt</code>.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Remove the state file and the solutions directory from the generated <code>.gitignore</code> file.</li>
<li>Run the final check of all exercises in parallel.</li>
<li>Small exercise improvements.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

152
changelog/v6.3.0/index.html Normal file
View File

@ -0,0 +1,152 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div>
<h1>Rustlings 6.3.0</h1>
<div class="releases-body">
<section class="release ">
<div class="release-info">
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'>
<path stroke-linecap='round' stroke-linejoin='round' d='M9.568 3H5.25A2.25 2.25 0 003 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 005.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 009.568 3z' />
<path stroke-linecap='round' stroke-linejoin='round' d='M6 6h.008v.008H6V6z' /></svg>
v6.3.0
</span>
<span class="flex items-center gap-2">
<svg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' class='w-6 h-6'><path stroke-linecap='round' stroke-linejoin='round' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5' /></svg>
Aug 29 2024 at 15:24 UTC
</span>
</div>
<div class="release-body">
<h3>Added</h3>
<ul>
<li>Add the following exercise lints:
<ul>
<li><code>forbid(unsafe_code)</code>: You shouldn't write unsafe code in Rustlings.</li>
<li><code>forbid(unstable_features)</code>: You don't need unstable features in Rustlings and shouldn't rely on them while learning Rust.</li>
<li><code>forbid(todo)</code>: You forgot a <code>todo!()</code>.</li>
<li><code>forbid(empty_loop)</code>: This can only happen by mistake in Rustlings.</li>
<li><code>deny(infinite_loop)</code>: No infinite loops are needed in Rustlings.</li>
<li><code>deny(mem_forget)</code>: You shouldn't leak memory while still learning Rust.</li>
</ul>
</li>
<li>Show a link to every exercise file in the list.</li>
<li>Add scroll padding in the list.</li>
<li>Break the help footer of the list into two lines when the terminal width isn't big enough.</li>
<li>Enable scrolling with the mouse in the list.</li>
<li><code>dev check</code>: Show the progress of checks.</li>
<li><code>dev check</code>: Check that the length of all exercise names is lower than 32.</li>
<li><code>dev check</code>: Check if exercise contains no tests and isn't marked with <code>test = false</code>.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>The compilation time when installing Rustlings is reduced.</li>
<li>Pressing <code>c</code> in the list for "continue on" now quits the list after setting the selected exercise as the current one.</li>
<li>Better highlighting of the solution file after an exercise is done.</li>
<li>Don't show the output of successful tests anymore. Instead, show the pretty output for tests.</li>
<li>Be explicit about <code>q</code> only quitting the list and not the whole program in the list.</li>
<li>Be explicit about <code>r</code> only resetting one exercise (the selected one) in the list.</li>
<li>Ignore the standard output of <code>git init</code>.</li>
<li><code>threads3</code>: Remove the queue length and improve tests.</li>
<li><code>errors4</code>: Use match instead of a comparison chain in the solution.</li>
<li><code>functions3</code>: Only take <code>u8</code> to avoid using a too high number of iterations by mistake.</li>
<li><code>dev check</code>: Always check with strict Clippy (warnings to errors) when checking the solutions.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix the error on some systems about too many open files during the final check of all exercises.</li>
<li>Fix the list when the terminal height is too low.</li>
<li>Restore the terminal after an error in the list.</li>
</ul>
<p><a rel="noopener noreferrer"></a></p>
</div>
</section>
</div>
</div>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

196
index.html Normal file
View File

@ -0,0 +1,196 @@
<!DOCTYPE html>
<html lang="en" id="oranda" class="dark">
<head>
<title>rustlings</title>
<meta property="og:url" content="https://rustlings.cool" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:description" content="Small exercises to get you used to reading and writing Rust code!" />
<meta property="og:type" content="website" />
<meta property="og:title" content="rustlings" />
<meta http-equiv="Permissions-Policy" content="interest-cohort=()" />
<link rel="stylesheet" href="/oranda-v0.3.1.css" />
</head>
<body>
<div class="container">
<div class="page-body">
<div class="repo_banner">
<a href="https://github.com/rust-lang/rustlings">
<div class="github-icon" aria-hidden="true"></div>
Check out our GitHub!
</a>
</div>
<main>
<header>
<h1 class="title">rustlings</h1>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/changelog/">Changelog</a></li>
</ul>
</nav>
</header>
<div class="oranda-hide">
<h1>Rustlings 🦀❤️</h1>
</div>
<p>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!</p>
<p>It is recommended to do the Rustlings exercises in parallel to reading <a href="https://doc.rust-lang.org/book/" rel="noopener noreferrer">the official Rust book</a>, the most comprehensive resource for learning Rust 📚️</p>
<p><a href="https://doc.rust-lang.org/rust-by-example/" rel="noopener noreferrer">Rust By Example</a> is another recommended resource that you might find helpful.
It contains code examples and exercises similar to Rustlings, but online.</p>
<h2>Getting Started</h2>
<h3>Installing Rust</h3>
<p>Before installing Rustlings, you need to have the <strong>latest version of Rust</strong> installed.
Visit <a href="https://www.rust-lang.org/tools/install" rel="noopener noreferrer">www.rust-lang.org/tools/install</a> for further instructions on installing Rust.
This will also install <em>Cargo</em>, Rust's package/project manager.</p>
<blockquote>
<p>🐧 If you're on Linux, make sure you've installed <code>gcc</code> (for a linker).</p>
<p>Deb: <code>sudo apt install gcc</code>.
Dnf: <code>sudo dnf install gcc</code>.</p>
</blockquote>
<blockquote>
<p>🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running <code>xcode-select --install</code>.</p>
</blockquote>
<h3>Installing Rustlings</h3>
<p>The following command will download and compile Rustlings:</p>
<pre style="background-color:#263238;"><span style="color:#82aaff;">cargo install rustlings
</span></pre>
<details>
<summary><strong>If the installation fails…</strong> (<em>click to expand</em>)</summary>
<ul>
<li>Make sure you have the latest Rust version by running <code>rustup update</code></li>
<li>Try adding the <code>--locked</code> flag: <code>cargo install rustlings --locked</code></li>
<li>Otherwise, please <a href="https://github.com/rust-lang/rustlings/issues/new" rel="noopener noreferrer">report the issue</a></li>
</ul>
</details>
<h3>Initialization</h3>
<p>After installing Rustlings, run the following command to initialize the <code>rustlings/</code> directory:</p>
<pre style="background-color:#263238;"><span style="color:#82aaff;">rustlings init
</span></pre>
<details>
<summary><strong>If the command <code>rustlings</code> can't be found…</strong> (<em>click to expand</em>)</summary>
<p>You are probably using Linux and installed Rust using your package manager.</p>
<p>Cargo installs binaries to the directory <code>~/.cargo/bin</code>.
Sadly, package managers often don't add <code>~/.cargo/bin</code> to your <code>PATH</code> environment variable.</p>
<p>The solution is to …</p>
<ul>
<li>either add <code>~/.cargo/bin</code> manually to <code>PATH</code></li>
<li>or to uninstall Rust from the package manager and install it using the official way with <code>rustup</code>: <a href="https://www.rust-lang.org/tools/install" rel="noopener noreferrer">https://www.rust-lang.org/tools/install</a></li>
</ul>
</details>
<p>Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:</p>
<pre style="background-color:#263238;"><span style="color:#82aaff;">cd rustlings/
</span><span style="color:#82aaff;">rustlings
</span></pre>
<h2>Working environment</h2>
<h3>Editor</h3>
<p>Our general recommendation is <a href="https://code.visualstudio.com/" rel="noopener noreferrer">VS Code</a> with the <a href="https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer" rel="noopener noreferrer">rust-analyzer plugin</a>.
But any editor that supports <a href="https://rust-analyzer.github.io/" rel="noopener noreferrer">rust-analyzer</a> should be enough for working on the exercises.</p>
<h3>Terminal</h3>
<p>While working with Rustlings, please use a modern terminal for the best user experience.
The default terminal on Linux and Mac should be sufficient.
On Windows, we recommend the <a href="https://aka.ms/terminal" rel="noopener noreferrer">Windows Terminal</a>.</p>
<h2>Doing exercises</h2>
<p>The exercises are sorted by topic and can be found in the subdirectory <code>exercises/&lt;topic&gt;</code>.
For every topic, there is an additional <code>README.md</code> file with some resources to get you started on the topic.
We highly recommend that you have a look at them before you start 📚️</p>
<p>Most exercises contain an error that keeps them from compiling, and it's up to you to fix it!
Some exercises contain tests that need to pass for the exercise to be done ✅</p>
<p>Search for <code>TODO</code> and <code>todo!()</code> to find out what you need to change.
Ask for hints by entering <code>h</code> in the <em>watch mode</em> 💡</p>
<h3>Watch Mode</h3>
<p>After <a href="#initialization" rel="noopener noreferrer">initialization</a>, Rustlings can be launched by simply running the command <code>rustlings</code>.</p>
<p>This will start the <em>watch mode</em> which walks you through the exercises in a predefined order (what we think is best for newcomers).
It will rerun the current exercise automatically every time you change the exercise's file in the <code>exercises/</code> directory.</p>
<details>
<summary><strong>If detecting file changes in the <code>exercises/</code> directory fails…</strong> (<em>click to expand</em>)</summary>
<blockquote>
<p>You can add the <strong><code>--manual-run</code></strong> flag (<code>rustlings --manual-run</code>) to manually rerun the current exercise by entering <code>r</code> in the watch mode.</p>
<p>Please <a href="https://github.com/rust-lang/rustlings/issues/new" rel="noopener noreferrer">report the issue</a> with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).</p>
</blockquote>
</details>
<h3>Exercise List</h3>
<p>In the <a href="#watch-mode" rel="noopener noreferrer">watch mode</a> (after launching <code>rustlings</code>), you can enter <code>l</code> to open the interactive exercise list.</p>
<p>The list allows you to…</p>
<ul>
<li>See the status of all exercises (done or pending)</li>
<li><code>c</code>: Continue at another exercise (temporarily skip some exercises or go back to a previous one)</li>
<li><code>r</code>: Reset status and file of an exercise (you need to <em>reload/reopen</em> its file in your editor afterwards)</li>
</ul>
<p>See the footer of the list for all possible keys.</p>
<h2>Continuing On</h2>
<p>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.</p>
<h2>Third-Party Exercises</h2>
<p>Do you want to create your own set of Rustlings exercises to focus on some specific topic?
Or do you want to translate the original Rustlings exercises?
Then follow the link to the guide about <a href="https://github.com/rust-lang/rustlings/blob/main/THIRD_PARTY_EXERCISES.md" rel="noopener noreferrer">third-party exercises</a>!</p>
<h2>Uninstalling Rustlings</h2>
<p>If you want to remove Rustlings from your system, run the following command:</p>
<pre style="background-color:#263238;"><span style="color:#82aaff;">cargo uninstall rustlings
</span></pre>
<h2>Contributing</h2>
<p>See <a href="https://github.com/rust-lang/rustlings/blob/main/CONTRIBUTING.md" rel="noopener noreferrer">CONTRIBUTING.md</a> 🔗</p>
<h2>Contributors ✨</h2>
<p>Thanks to <a href="https://github.com/rust-lang/rustlings/graphs/contributors" rel="noopener noreferrer">all the wonderful contributors</a> 🎉</p>
</main>
</div>
<footer>
<a href="https://github.com/rust-lang/rustlings"><div class="github-icon" aria-hidden="true"></div></a>
<span>
rustlings, MIT
</span>
</footer>
</div>
<script defer="true" data-domain="rustlings.cool" src="https://plausible.io/js/script.js"></script>
</body>
</html>

3
oranda-v0.3.1.css Normal file

File diff suppressed because one or more lines are too long