Compare commits

..

5 commits

Author SHA1 Message Date
mo8it 47f8a0cbe5 Add rust-analyzer.toml on dev new 2024-09-13 16:39:28 +02:00
mo8it 9459eef032 Use Clippy with Rust-Analyzer 2024-09-13 16:38:53 +02:00
mo8it 5aaa8924a6 <s>earch isn't a typo 2024-09-13 15:07:53 +02:00
mo8it 4ffce1c297 Move lint to Rust lints 2024-09-13 14:59:34 +02:00
mo8it 0513660b05 Allow dead code for all exercises and solutions 2024-09-13 14:56:46 +02:00
12 changed files with 18 additions and 24 deletions

View file

@ -1,3 +1,6 @@
[default.extend-words]
"earch" = "earch" # Because of <s>earch in the list footer
[files] [files]
extend-exclude = [ extend-exclude = [
"CHANGELOG.md", "CHANGELOG.md",

View file

@ -203,19 +203,21 @@ panic = "abort"
panic = "abort" panic = "abort"
[lints.rust] [lints.rust]
# You shouldn't write unsafe code in Rustlings # You shouldn't write unsafe code in Rustlings!
unsafe_code = "forbid" unsafe_code = "forbid"
# You don't need unstable features in Rustlings and shouldn't rely on them while learning Rust # You don't need unstable features in Rustlings and shouldn't rely on them while learning Rust.
unstable_features = "forbid" unstable_features = "forbid"
# Dead code warnings can't be avoided in some exercises and might distract while learning.
dead_code = "allow"
[lints.clippy] [lints.clippy]
# You forgot a `todo!()` # You forgot a `todo!()`!
todo = "forbid" todo = "forbid"
# This can only happen by mistake in Rustlings # This can only happen by mistake in Rustlings.
empty_loop = "forbid" empty_loop = "forbid"
# No infinite loops are needed in Rustlings # No infinite loops are needed in Rustlings.
infinite_loop = "deny" infinite_loop = "deny"
# You shouldn't leak memory while still learning Rust # You shouldn't leak memory while still learning Rust!
mem_forget = "deny" mem_forget = "deny"
# Currently, there are no disallowed methods. This line avoids problems when developing Rustlings. # Currently, there are no disallowed methods. This line avoids problems when developing Rustlings.
disallowed_methods = "allow" disallowed_methods = "allow"

View file

@ -1,5 +1,3 @@
#![allow(dead_code)]
#[derive(Debug)] #[derive(Debug)]
struct Point { struct Point {
x: u64, x: u64,

View file

@ -1,7 +1,6 @@
// You can bring module paths into scopes and provide new names for them with // You can bring module paths into scopes and provide new names for them with
// the `use` and `as` keywords. // the `use` and `as` keywords.
#[allow(dead_code)]
mod delicious_snacks { mod delicious_snacks {
// TODO: Add the following two `use` statements after fixing them. // TODO: Add the following two `use` statements after fixing them.
// use self::fruits::PEAR as ???; // use self::fruits::PEAR as ???;

View file

@ -1,5 +1,3 @@
#![allow(dead_code)]
trait Licensed { trait Licensed {
// TODO: Add a default implementation for `licensing_info` so that // TODO: Add a default implementation for `licensing_info` so that
// implementors like the two structs below can share that default behavior // implementors like the two structs below can share that default behavior

View file

@ -8,7 +8,6 @@ use std::rc::Rc;
#[derive(Debug)] #[derive(Debug)]
struct Sun; struct Sun;
#[allow(dead_code)]
#[derive(Debug)] #[derive(Debug)]
enum Planet { enum Planet {
Mercury(Rc<Sun>), Mercury(Rc<Sun>),

View file

@ -1,5 +1,3 @@
#![allow(dead_code)]
#[derive(Debug)] #[derive(Debug)]
struct Point { struct Point {
x: u64, x: u64,

View file

@ -1,4 +1,3 @@
#[allow(dead_code)]
mod delicious_snacks { mod delicious_snacks {
// Added `pub` and used the expected alias after `as`. // Added `pub` and used the expected alias after `as`.
pub use self::fruits::PEAR as fruit; pub use self::fruits::PEAR as fruit;

View file

@ -1,5 +1,3 @@
#![allow(dead_code)]
trait Licensed { trait Licensed {
fn licensing_info(&self) -> String { fn licensing_info(&self) -> String {
"Default license".to_string() "Default license".to_string()

View file

@ -8,7 +8,6 @@ use std::rc::Rc;
#[derive(Debug)] #[derive(Debug)]
struct Sun; struct Sun;
#[allow(dead_code)]
#[derive(Debug)] #[derive(Debug)]
enum Planet { enum Planet {
Mercury(Rc<Sun>), Mercury(Rc<Sun>),

View file

@ -6,7 +6,7 @@ use std::{
process::Command, process::Command,
}; };
use crate::CURRENT_FORMAT_VERSION; use crate::{init::RUST_ANALYZER_TOML, CURRENT_FORMAT_VERSION};
// Create a directory relative to the current directory and print its path. // Create a directory relative to the current directory and print its path.
fn create_rel_dir(dir_name: &str, current_dir: &str) -> Result<()> { fn create_rel_dir(dir_name: &str, current_dir: &str) -> Result<()> {
@ -62,6 +62,8 @@ pub fn new(path: &Path, no_git: bool) -> Result<()> {
write_rel_file("README.md", &dir_path_str, README)?; write_rel_file("README.md", &dir_path_str, README)?;
write_rel_file("rust-analyzer.toml", &dir_path_str, RUST_ANALYZER_TOML)?;
create_rel_dir(".vscode", &dir_path_str)?; create_rel_dir(".vscode", &dir_path_str)?;
write_rel_file( write_rel_file(
".vscode/extensions.json", ".vscode/extensions.json",

View file

@ -130,7 +130,7 @@ pub fn init() -> Result<()> {
fs::write("Cargo.toml", updated_cargo_toml) fs::write("Cargo.toml", updated_cargo_toml)
.context("Failed to create the file `rustlings/Cargo.toml`")?; .context("Failed to create the file `rustlings/Cargo.toml`")?;
fs::write("rust-analyzer.toml", RATOML) fs::write("rust-analyzer.toml", RUST_ANALYZER_TOML)
.context("Failed to create the file `rustlings/rust-analyzer.toml`")?; .context("Failed to create the file `rustlings/rust-analyzer.toml`")?;
fs::write(".gitignore", GITIGNORE) fs::write(".gitignore", GITIGNORE)
@ -172,10 +172,9 @@ const INIT_SOLUTION_FILE: &[u8] = b"fn main() {
} }
"; ";
const RATOML: &[u8] = br#"# rust-analyzer configuration file pub const RUST_ANALYZER_TOML: &[u8] = br#"check.command = "clippy"
# DO NOT edit what is already defined. check.extraArgs = ["--profile", "test"]
# You may add new configurations as needed. "#;
check.extraArgs = ["--profile", "test"]"#;
const GITIGNORE: &[u8] = b"Cargo.lock const GITIGNORE: &[u8] = b"Cargo.lock
target/ target/