mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-26 00:00:03 +03:00
Compare commits
7 commits
d09bad0142
...
7b6cf582a2
Author | SHA1 | Date | |
---|---|---|---|
7b6cf582a2 | |||
47f8a0cbe5 | |||
9459eef032 | |||
5aaa8924a6 | |||
4ffce1c297 | |||
0513660b05 | |||
9a25309c1c |
|
@ -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",
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
#![allow(dead_code)]
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Point {
|
struct Point {
|
||||||
x: u64,
|
x: u64,
|
||||||
|
|
|
@ -4,7 +4,11 @@ struct Point {
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Message {
|
enum Message {
|
||||||
// TODO: Implement the message variant types based on their usage below.
|
Resize { width: u64, height: u64 },
|
||||||
|
Move(Point),
|
||||||
|
Echo(String),
|
||||||
|
ChangeColor(u8, u8, u8),
|
||||||
|
Quit,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct State {
|
struct State {
|
||||||
|
|
|
@ -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 ???;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>),
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
#![allow(dead_code)]
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Point {
|
struct Point {
|
||||||
x: u64,
|
x: u64,
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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>),
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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/
|
||||||
|
|
Loading…
Reference in a new issue