// ==UserScript==
// @name Exercism Rust Concepts
// @namespace http://tampermonkey.net/
// @version 0.3
// @description Annotate exercises with concepts being tested
// @author You
// @match https://exercism.org/tracks/rust/exercises
// @match https://exercism.org/tracks/rust/exercises?*
// @icon https://www.google.com/s2/favicons?sz=64&domain=mozilla.org
// @grant none
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @require https://gf.qytechs.cn/scripts/476008-waitforkeyelements-gist-port/code/waitForKeyElements%20gist%20port.js?version=1255570
// @license MIT
// ==/UserScript==
waitForKeyElements("div.c-results-zone", annotate);
let prev_timeout = 0;
function annotate() {
console.log("#[userscript] annotating");
let data = get_data();
let tagstyle = "font-family: monospace; background-color: lightgrey; color: grey;";
let tagclass = "c-exercise-status-tag --small my-annotation";
let widgets = jQuery('a.c-exercise-widget');
//alert(widgets.length);
for (let widget of widgets) {
//console.log(widget);
let name = widget.href.split("/").reverse()[0];
for (let exercise of data.exercises.practice) {
if (exercise.slug == name) {
//console.log(name, exercise.name);
let title = jQuery(widget).find('.--title');
title.append(" ");
// skip if annotations already exist
if (title.find('.my-annotation').length > 0) continue;
for (let practice of exercise.practices) {
title.append("<div style='" + tagstyle + "' class='" + tagclass + "'>#" + practice + "</div>");
}
}
}
}
// re-annotate whenever tab header clicked (like "All Exercises", "Completed", "In Progress" ...)
jQuery('button.c-tab').click(function() {
console.log("#[userscript] click handler running");
if (prev_timeout > 0) clearTimeout(prev_timeout);
prev_timeout = setTimeout(annotate, 500);
});
}
function get_data() {
// copied over from https://github.com/exercism/rust/blob/main/config.json
return {
"language": "Rust",
"slug": "rust",
"active": true,
"status": {
"concept_exercises": false,
"test_runner": true,
"representer": true,
"analyzer": true
},
"blurb": "Rust is a compiled programming language designed for speed, concurrency, and memory safety. Rust programs can run almost anywhere, from low-power embedded devices to web servers.",
"version": 3,
"online_editor": {
"indent_style": "space",
"indent_size": 4,
"highlightjs_language": "rust"
},
"test_runner": {
"average_run_time": 2
},
"files": {
"solution": [
"src/lib.rs",
"Cargo.toml"
],
"test": [
"tests/%{kebab_slug}.rs"
],
"example": [
".meta/example.rs"
],
"exemplar": [
".meta/exemplar.rs"
]
},
"exercises": {
"concept": [
{
"slug": "lucians-luscious-lasagna",
"uuid": "29a2d3bd-eec8-454d-9dba-4b2d7d071925",
"name": "Lucian's Luscious Lasagna",
"difficulty": 1,
"concepts": [
"functions"
],
"prerequisites": [],
"status": "active"
},
{
"slug": "magazine-cutout",
"uuid": "091c141b-6b68-43ad-b009-a27cd6741906",
"name": "Magazine Cutout",
"difficulty": 1,
"concepts": [
"entry-api"
],
"prerequisites": [
"functions",
"option"
],
"status": "active"
},
{
"slug": "assembly-line",
"uuid": "b042200f-5bdd-4010-981e-626e40fd2877",
"name": "Assembly Line",
"difficulty": 1,
"concepts": [
"integers",
"floating-point-numbers"
],
"prerequisites": [
"functions"
],
"status": "active"
},
{
"slug": "semi-structured-logs",
"uuid": "1924b87a-9246-456f-8fc1-111f922a8cf3",
"name": "Semi Structured Logs",
"difficulty": 1,
"concepts": [
"enums"
],
"prerequisites": [
"functions"
],
"status": "active"
},
{
"slug": "resistor-color",
"uuid": "51c31e6a-b7ec-469d-8a28-dd821fd857d2",
"name": "Resistor Color",
"difficulty": 1,
"concepts": [
"external-crates"
],
"prerequisites": [
"functions",
"enums"
],
"status": "active"
},
{
"slug": "health-statistics",
"uuid": "3da2420e-9de3-42e0-9127-5ef185673dbb",
"name": "Health Statistics",
"difficulty": 1,
"concepts": [
"methods",
"structs"
],
"prerequisites": [
"floating-point-numbers",
"integers"
],
"status": "active"
},
{
"slug": "role-playing-game",
"uuid": "2445b061-6622-47cb-a7ef-9040ec02458c",
"name": "Role-Playing Game",
"difficulty": 1,
"concepts": [
"option"
],
"prerequisites": [
"structs",
"destructuring"
],
"status": "active"
},
{
"slug": "low-power-embedded-game",
"uuid": "7f064e9b-f631-48b1-9ed0-a66e8393ceba",
"name": "Low-Power Embedded Game",
"difficulty": 1,
"concepts": [
"tuples",
"destructuring"
],
"prerequisites": [
"structs"
],
"status": "active"
},
{
"slug": "short-fibonacci",
"uuid": "c481e318-ddd7-4f8a-91eb-dadb7315e304",
"name": "A Short Fibonacci Sequence",
"difficulty": 1,
"concepts": [
"vec-macro"
],
"prerequisites": [
"functions",
"integers"
],
"status": "active"
},
{
"slug": "rpn-calculator",
"uuid": "25cc722b-211d-4271-9381-fdfe16b41301",
"name": "RPN Calculator",
"difficulty": 4,
"concepts": [
"vec-stack"
],
"prerequisites": [
"functions",
"integers",
"option",
"enums"
],
"status": "active"
},
{
"slug": "csv-builder",
"uuid": "10c9f505-9aef-479f-b689-cb7959572482",
"name": "CSV builder",
"difficulty": 1,
"concepts": [
"string-vs-str"
],
"prerequisites": [
"strings",
"string-slices"
],
"status": "wip"
}
],
"practice": [
{
"slug": "hello-world",
"name": "Hello World",
"uuid": "13ec1ebe-d71b-436f-ab12-25305e814171",
"practices": [
"strings"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"test_driven_development"
]
},
{
"slug": "reverse-string",
"name": "Reverse String",
"uuid": "ecf8d1e3-9400-4d1a-8326-2e2820bce024",
"practices": [
"iterators",
"string-vs-str",
"strings"
],
"prerequisites": [],
"difficulty": 1,
"topics": []
},
{
"slug": "gigasecond",
"name": "Gigasecond",
"uuid": "f880b1ef-8f66-41f3-bb89-f39a4ed592a2",
"practices": [
"external-crates"
],
"prerequisites": [],
"difficulty": 1,
"topics": []
},
{
"slug": "clock",
"name": "Clock",
"uuid": "543a3ca2-fb9b-4f20-a873-ff23595d41df",
"practices": [
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"derive",
"traits"
]
},
{
"slug": "anagram",
"name": "Anagram",
"uuid": "f3172997-91f5-4941-a76e-91c4b8eed401",
"practices": [
"iterators",
"loops",
"string-vs-str",
"strings"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"lifetimes",
"vectors"
]
},
{
"slug": "space-age",
"name": "Space Age",
"uuid": "fa94645d-14e1-422d-a832-d24efbb493d8",
"practices": [],
"prerequisites": [],
"difficulty": 7,
"topics": [
"from_trait",
"trait_implementation",
"traits"
]
},
{
"slug": "sublist",
"name": "Sublist",
"uuid": "644ffd17-548e-4405-bfd5-a58df74cc19d",
"practices": [
"enums"
],
"prerequisites": [],
"difficulty": 7,
"topics": [
"generic_over_type"
]
},
{
"slug": "minesweeper",
"name": "Minesweeper",
"uuid": "e0037ac4-ae5f-4622-b3ad-915648263495",
"practices": [],
"prerequisites": [],
"difficulty": 7,
"topics": [
"board_state"
]
},
{
"slug": "luhn",
"name": "Luhn",
"uuid": "8d64bfc3-fc4b-45c4-85f0-e74dc2ea6812",
"practices": [
"iterators"
],
"prerequisites": [],
"difficulty": 7,
"topics": [
"higher_order_functions",
"str_to_digits"
]
},
{
"slug": "parallel-letter-frequency",
"name": "Parallel Letter Frequency",
"uuid": "e114b19f-9a9a-402d-a5cb-1cad8de5088e",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"multi_threading"
]
},
{
"slug": "macros",
"name": "Macros",
"uuid": "29583cc6-d56d-4bee-847d-93d74e5a30e7",
"practices": [
"hashmap"
],
"prerequisites": [],
"difficulty": 10,
"topics": [
"macros",
"macros_by_example"
]
},
{
"slug": "poker",
"name": "Poker",
"uuid": "0a33f3ac-cedd-4a40-a132-9d044b0e9977",
"practices": [
"enums",
"strings",
"structs"
],
"prerequisites": [],
"difficulty": 10,
"topics": [
"lifetimes",
"parsing",
"traits"
]
},
{
"slug": "forth",
"name": "Forth",
"uuid": "55976c49-1be5-4170-8aa3-056c2223abbb",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"parsing"
]
},
{
"slug": "armstrong-numbers",
"name": "Armstrong Numbers",
"uuid": "e652139e-ff3f-4e03-9810-d21f8b0c9e60",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"math"
]
},
{
"slug": "beer-song",
"name": "Beer Song",
"uuid": "bb42bc3a-139d-4cab-8b3a-2eac2e1b77b6",
"practices": [
"loops",
"strings"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"case",
"vectors"
]
},
{
"slug": "difference-of-squares",
"name": "Difference of Squares",
"uuid": "aee49878-f727-400b-8fb5-eaf83447cf87",
"practices": [
"fold"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"map",
"math"
]
},
{
"slug": "grains",
"name": "Grains",
"uuid": "9e69dd5d-472d-43d7-a8bb-60e4a7bed175",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"panic"
]
},
{
"slug": "leap",
"name": "Leap",
"uuid": "ef52f576-9c33-4cc1-a018-803ace8897f6",
"practices": [
"booleans"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"conditionals"
]
},
{
"slug": "nth-prime",
"name": "Nth Prime",
"uuid": "ee5048a7-c625-434d-a0a2-4fd54757ee02",
"practices": [
"loops"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"math",
"primes"
]
},
{
"slug": "prime-factors",
"name": "Prime Factors",
"uuid": "9f649818-0c82-4b79-b912-4d65b9f60e10",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"math"
]
},
{
"slug": "proverb",
"name": "Proverb",
"uuid": "504f9033-6433-4508-aebb-60ee77b800b9",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"format"
]
},
{
"slug": "raindrops",
"name": "Raindrops",
"uuid": "2c12be9b-3a02-4161-8eac-050642ad791f",
"practices": [
"strings"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"conditionals",
"type_conversion",
"variables"
]
},
{
"slug": "sum-of-multiples",
"name": "Sum of Multiples",
"uuid": "be90fe16-9947-45ef-ab8e-eeca4ce3a8c8",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"algorithms",
"borrowing",
"math"
]
},
{
"slug": "bob",
"name": "Bob",
"uuid": "38ef1802-2730-4f94-bafe-d2cd6b3e7f95",
"practices": [
"char",
"strings"
],
"prerequisites": [],
"difficulty": 1,
"topics": []
},
{
"slug": "high-scores",
"name": "High Scores",
"uuid": "7e0f5d25-e1f2-4a25-b150-1c8b24f328d7",
"practices": [
"iterators"
],
"prerequisites": [],
"difficulty": 1,
"topics": [
"lifetimes",
"vectors"
]
},
{
"slug": "matching-brackets",
"name": "Matching Brackets",
"uuid": "40729822-4265-4c14-b03f-a00bff5f24bb",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"stack_or_recursion"
]
},
{
"slug": "acronym",
"name": "Acronym",
"uuid": "26a9102f-26f6-4238-858e-ba20db66f1a9",
"practices": [
"loops"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"filter",
"flat_map",
"map",
"vectors"
]
},
{
"slug": "all-your-base",
"name": "All Your Base",
"uuid": "54c11dae-3878-4bec-b8d6-775b7d4f317b",
"practices": [
"fold"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"enumerate",
"map",
"math",
"result_type"
]
},
{
"slug": "allergies",
"name": "Allergies",
"uuid": "94f040d6-3f41-4950-8fe6-acf0945ac83d",
"practices": [
"enums",
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"bitwise",
"filter",
"vectors"
]
},
{
"slug": "alphametics",
"name": "Alphametics",
"uuid": "7450bd80-2388-42ac-a61f-097e82581475",
"practices": [
"external-crates",
"strings"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"combinations",
"parsing"
]
},
{
"slug": "binary-search",
"name": "Binary Search",
"uuid": "dd74b65c-0d26-4821-9add-064e32e3a5bd",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"option_type",
"slices",
"traits"
]
},
{
"slug": "bowling",
"name": "Bowling",
"uuid": "fec447a5-cf11-4ddd-b0fd-63bcc4e245cd",
"practices": [
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"goofy_bowling_logic",
"result_type"
]
},
{
"slug": "dot-dsl",
"name": "DOT DSL",
"uuid": "7bc60899-3b12-4c51-b23b-8dced5845e4c",
"practices": [
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"builder_pattern",
"derive",
"modules"
]
},
{
"slug": "etl",
"name": "ETL",
"uuid": "0c8eeef7-4bab-4cf9-9047-c208b5618312",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"btree"
]
},
{
"slug": "grade-school",
"name": "Grade School",
"uuid": "5ca03812-c229-48db-b7fd-0889b22f8d1d",
"practices": [
"entry-api",
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"option_type",
"vectors"
]
},
{
"slug": "hamming",
"name": "Hamming",
"uuid": "2874216a-0822-4ec2-892e-d451fd89646a",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"option_type"
]
},
{
"slug": "isbn-verifier",
"name": "ISBN Verifier",
"uuid": "c986c240-46de-419c-8ed6-700eb68f8db6",
"practices": [
"loops"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"int_string_conversion"
]
},
{
"slug": "isogram",
"name": "Isogram",
"uuid": "d141ec66-a161-4c3d-832b-439699bf0d4c",
"practices": [
"char",
"iterators",
"strings"
],
"prerequisites": [],
"difficulty": 4,
"topics": []
},
{
"slug": "nucleotide-count",
"name": "Nucleotide Count",
"uuid": "3f54853b-cc65-4282-ab25-8dc3fdf43c03",
"practices": [
"entry-api",
"mutability"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"filter",
"match",
"result_type"
]
},
{
"slug": "paasio",
"name": "PaaS I/O",
"uuid": "8c24c151-d22a-4818-83b5-4fe0f919e3fd",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"io",
"traits"
]
},
{
"slug": "palindrome-products",
"name": "Palindrome Products",
"uuid": "8cdc3424-51da-4cae-a065-9982859d5b55",
"practices": [
"strings",
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"calculation",
"math"
]
},
{
"slug": "pangram",
"name": "Pangram",
"uuid": "a24cb7bf-3aac-4051-bcd1-952c2a806187",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"ascii",
"filter"
]
},
{
"slug": "pascals-triangle",
"name": "Pascal's Triangle",
"uuid": "ddc0c1da-6b65-4ed1-8bdc-5e71cd05f720",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"index",
"math",
"vectors"
]
},
{
"slug": "perfect-numbers",
"name": "Perfect Numbers",
"uuid": "20e7d347-b80a-4656-ac34-0825126939ff",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"math"
]
},
{
"slug": "pig-latin",
"name": "Pig Latin",
"uuid": "c21c379b-fb23-449b-809a-3c6ef1c31221",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"ascii",
"regular_expressions",
"strings"
]
},
{
"slug": "queen-attack",
"name": "Queen Attack",
"uuid": "30c33e3d-8034-4618-8346-2ae906961579",
"practices": [
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"result_type",
"traits"
]
},
{
"slug": "rna-transcription",
"name": "RNA Transcription",
"uuid": "9a219d87-cd32-4e12-a879-bfb5747c2369",
"practices": [
"string-vs-str",
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"match",
"result_type",
"strings"
]
},
{
"slug": "run-length-encoding",
"name": "Run-Length Encoding",
"uuid": "4dc9b165-792a-4438-be80-df9aab6f6a9c",
"practices": [
"char",
"loops"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"int_string_conversion",
"strings"
]
},
{
"slug": "saddle-points",
"name": "Saddle Points",
"uuid": "e623afd9-f23f-4ab3-a427-c7071621be90",
"practices": [
"iterators"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"vectors"
]
},
{
"slug": "say",
"name": "Say",
"uuid": "4ba35adb-230b-49a6-adc9-2d3cd9a4c538",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"modulus",
"strings"
]
},
{
"slug": "scrabble-score",
"name": "Scrabble Score",
"uuid": "561cc4ff-5e74-4701-a7c2-c4edefa0d068",
"practices": [
"hashmap"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"higher_order_functions"
]
},
{
"slug": "sieve",
"name": "Sieve",
"uuid": "da784b42-1cec-469e-8e48-0be232b17003",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"map",
"math",
"vectors",
"while_let"
]
},
{
"slug": "simple-linked-list",
"name": "Simple Linked List",
"uuid": "10923b0b-c726-44a7-9e02-b775e7b8b237",
"practices": [
"structs"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"lists",
"type_conversion"
]
},
{
"slug": "spiral-matrix",
"name": "Spiral Matrix",
"uuid": "8dea3473-36f4-4228-b24b-bee8d9389167",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"matrix",
"nested_structures"
]
},
{
"slug": "tournament",
"name": "Tournament",
"uuid": "9a2406cc-5037-4761-b820-bb25b1d397c8",
"practices": [
"enums",
"hashmap"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"sorting",
"structs"
]
},
{
"slug": "triangle",
"name": "Triangle",
"uuid": "c0bc2af6-d7af-401f-9ed8-bbe31977666c",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"structs"
]
},
{
"slug": "two-bucket",
"name": "Two Bucket",
"uuid": "1850fb3f-9dad-449a-90b6-9d90038cf34d",
"practices": [
"loops"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"algorithms"
]
},
{
"slug": "variable-length-quantity",
"name": "Variable Length Quantity",
"uuid": "f1371a9c-c2a4-4fc6-a5fd-3a57c4af16fa",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"bitwise",
"encodings",
"result_type",
"slices"
]
},
{
"slug": "robot-simulator",
"name": "Robot Simulator",
"uuid": "1beb8b0c-d06d-4569-80e5-866ed01a7a66",
"practices": [
"enums"
],
"prerequisites": [],
"difficulty": 7,
"topics": [
"immutability"
]
},
{
"slug": "robot-name",
"name": "Robot Name",
"uuid": "ec7f66c2-749e-4d00-9c11-fa9d106632e4",
"practices": [
"mutability"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"lifetimes",
"randomness",
"slices",
"structs"
]
},
{
"slug": "protein-translation",
"name": "Protein Translation",
"uuid": "4e01efbc-51ce-4d20-b093-b3d44c4be5e8",
"practices": [
"hashmap"
],
"prerequisites": [],
"difficulty": 7,
"topics": [
"lifetimes",
"result_type",
"structs"
]
},
{
"slug": "ocr-numbers",
"name": "OCR Numbers",
"uuid": "704aab91-b83a-4e64-8c21-fb0be5076289",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"chunks",
"lines",
"slices"
]
},
{
"slug": "react",
"name": "React",
"uuid": "8708ccc7-711a-4862-b5a4-ff59fde2241c",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"closures",
"generics",
"lifetimes"
]
},
{
"slug": "wordy",
"name": "Wordy",
"uuid": "620b55bb-058e-4c6f-a966-ced3b41736db",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"operators",
"parsing",
"result_type",
"strings"
]
},
{
"slug": "custom-set",
"name": "Custom Set",
"uuid": "9d652e63-6654-4dec-a99f-97e6bc8cf772",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"equality",
"generic_over_type",
"structs",
"vectors"
]
},
{
"slug": "circular-buffer",
"name": "Circular Buffer",
"uuid": "6ff1a539-251b-49d4-81b5-a6b1e9ba66a4",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"buffers",
"generics"
]
},
{
"slug": "rectangles",
"name": "Rectangles",
"uuid": "cc4ccd99-1c97-4ee7-890c-d629b4e1e46d",
"practices": [
"enums"
],
"prerequisites": [],
"difficulty": 10,
"topics": [
"algorithms",
"structs",
"traits"
]
},
{
"slug": "collatz-conjecture",
"name": "Collatz Conjecture",
"uuid": "f9afd650-8103-4373-a284-fa4ecfee7207",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"math",
"option_type"
]
},
{
"slug": "diffie-hellman",
"name": "Diffie-Hellman",
"uuid": "ff9344b6-b185-4d53-bb03-f1d2bce8c959",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"math"
]
},
{
"slug": "series",
"name": "Series",
"uuid": "9de405e1-3a05-43cb-8eb3-00b81a2968e9",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"strings",
"vectors"
]
},
{
"slug": "accumulate",
"name": "Accumulate",
"uuid": "ddc45979-8a92-4313-a4f8-878562d5a483",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"generics",
"higher_order_functions",
"move_semantics"
]
},
{
"slug": "affine-cipher",
"name": "Affine Cipher",
"uuid": "2a1dcf38-ec05-4b24-a2e2-2e5b3595f3f0",
"practices": [
"char",
"iterators",
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"ascii",
"primitive_types",
"strings"
]
},
{
"slug": "atbash-cipher",
"name": "Atbash Cipher",
"uuid": "53298a14-76a9-4bb9-943a-57c5e79d9cf7",
"practices": [
"char",
"iterators",
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"ascii",
"primitive_types",
"strings"
]
},
{
"slug": "crypto-square",
"name": "Crypto Square",
"uuid": "0cc485e9-43ba-4d97-a622-ee4cb8b9f1f7",
"practices": [
"char",
"iterators",
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"arrays",
"ascii",
"primitive_types",
"strings",
"transforming"
]
},
{
"slug": "diamond",
"name": "Diamond",
"uuid": "c6878b91-70dd-49a0-b7c1-06364fa3d80b",
"practices": [
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"parsing",
"strings"
]
},
{
"slug": "largest-series-product",
"name": "Largest Series Product",
"uuid": "8679c221-d150-4230-b1cd-5ea78ae69db7",
"practices": [
"char"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"higher_order_functions",
"math",
"result_type",
"windows"
]
},
{
"slug": "luhn-from",
"name": "Luhn From",
"uuid": "f9131b5d-91dd-4514-983d-4abc22bb5d5c",
"practices": [
"iterators"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"from_trait",
"higher_order_functions",
"str_to_digits"
]
},
{
"slug": "luhn-trait",
"name": "Luhn Trait",
"uuid": "c32c0124-873d-45f4-9287-402aea29f129",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"higher_order_functions",
"iterators",
"str_to_digits",
"traits"
]
},
{
"slug": "phone-number",
"name": "Phone Number",
"uuid": "6abac1d1-0d85-4b51-8001-97a07990630d",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": [
"format",
"iterators",
"match",
"option_type",
"unwrap_or"
]
},
{
"slug": "rail-fence-cipher",
"name": "Rail Fence Cipher",
"uuid": "9a8bae4f-2c0b-4e9e-aab2-b92f82dd3b87",
"practices": [
"char"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"cipher",
"strings"
]
},
{
"slug": "roman-numerals",
"name": "Roman Numerals",
"uuid": "498be645-734a-49b7-aba7-aae1e051e1f0",
"practices": [
"loops",
"mutability"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"result_type",
"structs",
"traits"
]
},
{
"slug": "rotational-cipher",
"name": "Rotational Cipher",
"uuid": "5dbecc83-2c8d-467d-be05-f28a08f7abcf",
"practices": [
"char",
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"ascii",
"iterators",
"primitive_types",
"strings"
]
},
{
"slug": "simple-cipher",
"name": "Simple Cipher",
"uuid": "3aba9330-da46-48ee-bb9d-7e8f6c1ae7eb",
"practices": [
"char",
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"ascii",
"strings"
]
},
{
"slug": "word-count",
"name": "Word Count",
"uuid": "6c5c0dc3-4f5b-4f83-bf67-a45bf4ea6be4",
"practices": [
"entry-api",
"hashmap",
"string-vs-str"
],
"prerequisites": [],
"difficulty": 4,
"topics": [
"char",
"strings"
]
},
{
"slug": "fizzy",
"name": "Fizzy",
"uuid": "6b209749-d4af-45c2-bbdc-27603ce6979f",
"practices": [],
"prerequisites": [],
"difficulty": 7,
"topics": [
"generics",
"impl_trait",
"iterators"
]
},
{
"slug": "pythagorean-triplet",
"name": "Pythagorean Triplet",
"uuid": "6e7cac84-99d1-4f9f-b7d6-48ea43024bc0",
"practices": [],
"prerequisites": [],
"difficulty": 7,
"topics": [
"math"
]
},
{
"slug": "xorcism",
"name": "Xorcism",
"uuid": "0520ad82-75d9-450c-9267-d9758b3b0513",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"bitwise",
"generics",
"lifetimes"
]
},
{
"slug": "book-store",
"name": "Book Store",
"uuid": "a78ed17a-b2c0-485c-814b-e13ccd1f4153",
"practices": [],
"prerequisites": [],
"difficulty": 7,
"topics": [
"algorithms",
"groups",
"set_theory"
]
},
{
"slug": "decimal",
"name": "Decimal",
"uuid": "7cefed7c-37f4-46c5-9a45-68fe4d0fb326",
"practices": [
"external-crates"
],
"prerequisites": [],
"difficulty": 7,
"topics": [
"bigint",
"parsing",
"strings",
"structs",
"traits"
]
},
{
"slug": "grep",
"name": "Grep",
"uuid": "1bce70ca-db1a-46c8-a314-07d3fda921c2",
"practices": [],
"prerequisites": [],
"difficulty": 7,
"topics": [
"anyhow_crate",
"conditionals",
"file_io",
"parsing",
"result_type",
"strings",
"utf"
]
},
{
"slug": "scale-generator",
"name": "Scale Generator",
"uuid": "b9436a89-90cb-4fb7-95b0-758f17c309ff",
"practices": [
"enums"
],
"prerequisites": [],
"difficulty": 7,
"topics": [
"from_primitive",
"music_theory",
"to_primitive",
"traits"
]
},
{
"slug": "dominoes",
"name": "Dominoes",
"uuid": "5e6f6986-5011-427b-a992-d6d0c81f5101",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"graph_theory",
"searching"
]
},
{
"slug": "doubly-linked-list",
"name": "Doubly Linked List",
"uuid": "34738b66-28bb-41bc-85c6-68fcf4a09bc2",
"practices": [],
"prerequisites": [],
"difficulty": 10,
"topics": [
"generics",
"lists",
"unsafe"
]
},
{
"slug": "secret-handshake",
"name": "Secret Handshake",
"uuid": "8c044530-9deb-4ff7-a638-98d6c05ebbb8",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": []
},
{
"slug": "hexadecimal",
"name": "Hexadecimal",
"uuid": "496fd79f-1678-4aa2-8110-c32c6aaf545e",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [],
"status": "deprecated"
},
{
"slug": "nucleotide-codons",
"name": "Nucleotide Codons",
"uuid": "8dae8f4d-368d-477d-907e-bf746921bfbf",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [],
"status": "deprecated"
},
{
"slug": "two-fer",
"name": "Two Fer",
"uuid": "585e963b-366c-48bc-b523-29b6be4175c8",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": [
"match",
"strings"
],
"status": "deprecated"
},
{
"slug": "knapsack",
"name": "Knapsack",
"uuid": "cbccd0c5-eb15-4705-9a4c-0209861f078c",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": []
},
{
"slug": "kindergarten-garden",
"name": "Kindergarten Garden",
"uuid": "c27e4878-28a4-4637-bde2-2af681a7ff0d",
"practices": [],
"prerequisites": [],
"difficulty": 1,
"topics": []
},
{
"slug": "yacht",
"name": "Yacht",
"uuid": "1a0e8e34-f578-4a53-91b0-8a1260446553",
"practices": [],
"prerequisites": [],
"difficulty": 4,
"topics": []
}
],
"foregone": [
"binary",
"octal",
"trinary"
]
},
"concepts": [
{
"uuid": "f7be1969-380e-4348-ac79-9b2834a526fd",
"slug": "string-slices",
"name": "String Slices"
},
{
"uuid": "1d635be5-fcfa-4a2d-b78d-60e8d1895e19",
"slug": "string-vs-str",
"name": "String vs str"
},
{
"uuid": "d29b735e-26fb-4eea-9f2d-0e738d2571ca",
"slug": "booleans",
"name": "Booleans"
},
{
"uuid": "908173dc-3e6a-4f15-be9f-f3aa4b880f24",
"slug": "box",
"name": "Box"
},
{
"uuid": "5c61a070-0585-4e23-8620-46c7c73f2fe1",
"slug": "char",
"name": "Char"
},
{
"uuid": "1cbd4801-6c66-4c56-902d-b9c5a0093915",
"slug": "collect",
"name": "Collect"
},
{
"uuid": "3fe73200-fe19-4492-98ec-40bc17760cdd",
"slug": "fold",
"name": "Fold"
},
{
"uuid": "cd77f4c9-3c07-4882-b828-ac99748415e5",
"slug": "functions",
"name": "Functions"
},
{
"uuid": "3e01401e-1627-4423-aa8b-f9cf52c4adaa",
"slug": "references",
"name": "References"
},
{
"uuid": "37e85710-3e1d-40f4-aed9-72f43e8a2fcd",
"slug": "destructuring",
"name": "Destructuring"
},
{
"uuid": "a2e79ee4-8534-45ac-ad36-5dcde91a6bf4",
"slug": "entry-api",
"name": "Entry API"
},
{
"uuid": "40d727f1-d011-4305-b1c2-1b4380246d9b",
"slug": "enums",
"name": "Enums Basic"
},
{
"uuid": "8109754d-fdb4-4e92-bba2-ed763bfdf539",
"slug": "external-crates",
"name": "External crates"
},
{
"uuid": "cebb248b-b9d5-4189-a764-87b14e8dd603",
"slug": "floating-point-numbers",
"name": "Floating Point Numbers"
},
{
"uuid": "e119467a-34f7-4841-9929-88d4317d904d",
"slug": "hashmap",
"name": "Hashmap"
},
{
"uuid": "8e399de6-f143-45fb-bb8e-1ce1f15dcf01",
"slug": "integers",
"name": "Integers"
},
{
"uuid": "722c2a9c-e617-4946-b9f4-d1b7b13f51ee",
"slug": "iterators",
"name": "Iterators"
},
{
"uuid": "56c95d54-dacc-4a9f-b38f-7cca4fef6307",
"slug": "loops",
"name": "Loops"
},
{
"uuid": "5f133f11-050d-47e7-9b32-ba3258929eb8",
"slug": "match-basics",
"name": "Match Basics"
},
{
"uuid": "1991fcd2-ee16-4fea-9fd9-041e0ff64f19",
"slug": "methods",
"name": "Methods"
},
{
"uuid": "76f4ccd0-c5ab-456b-a874-c70eb34c57f8",
"slug": "mutability",
"name": "Mutability"
},
{
"uuid": "36bc26cf-dd54-4706-9abf-7a89e6a168e3",
"slug": "option",
"name": "Option"
},
{
"uuid": "7317fc9b-93b5-4712-aae3-e44d3b0fb451",
"slug": "strings",
"name": "Strings"
},
{
"uuid": "febd2cf9-e058-48ef-bdc7-7583fb67e053",
"slug": "structs",
"name": "Structs"
},
{
"uuid": "ea7b6b75-a0cd-4447-b791-3993c7635b05",
"slug": "tuples",
"name": "Tuples"
},
{
"uuid": "6ff479bf-d1a7-4ed8-af69-0e06aea921d5",
"slug": "vec-macro",
"name": "vec! macro"
},
{
"uuid": "ffb6842a-631b-42f5-bfa2-cb1dc2497250",
"slug": "vec-stack",
"name": "Vector as a Stack"
}
],
"key_features": [
{
"icon": "fast",
"title": "Performance",
"content": "Rust is blazingly fast and memory-efficient; it has no runtime or garbage collector."
},
{
"icon": "stable",
"title": "Reliability",
"content": "Rust’s rich type system and ownership model guarantee memory-safety and thread-safety."
},
{
"icon": "productive",
"title": "Productivity",
"content": "Rust has great documentation, a friendly compiler with useful error messages, and top-notch tooling."
},
{
"icon": "tooling",
"title": "Cargo",
"content": "Rust's package manager and build tool is best-in-class."
},
{
"icon": "cross-platform",
"title": "Write Once, Run Anywhere",
"content": "Rust compiles by default to a single static executable, and cross-compilation is easy."
},
{
"icon": "fun",
"title": "❤︎",
"content": "Stack Overflow's most-loved language every year since 2016."
}
],
"tags": [
"paradigm/functional",
"paradigm/imperative",
"paradigm/procedural",
"typing/static",
"typing/strong",
"execution_mode/compiled",
"platform/windows",
"platform/mac",
"platform/linux",
"platform/ios",
"platform/android",
"platform/web",
"runtime/standalone_executable",
"runtime/wasmtime",
"used_for/backends",
"used_for/cross_platform_development",
"used_for/embedded_systems",
"used_for/financial_systems",
"used_for/frontends",
"used_for/games",
"used_for/robotics",
"used_for/scientific_calculations",
"used_for/web_development"
]
};
}