mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-25 23:10:30 +00:00
Remove outdated installation methods
This commit is contained in:
parent
6494a8c50b
commit
d8160f9113
8 changed files with 1 additions and 262 deletions
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"image": "mcr.microsoft.com/devcontainers/rust:1",
|
|
||||||
"updateContentCommand": ["cargo", "build"],
|
|
||||||
"postAttachCommand": ["rustlings", "watch"],
|
|
||||||
"remoteEnv": {
|
|
||||||
"PATH": "${containerEnv:PATH}:${containerWorkspaceFolder}/target/debug"
|
|
||||||
}
|
|
||||||
}
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -19,9 +19,5 @@ public/
|
||||||
.idea
|
.idea
|
||||||
*.iml
|
*.iml
|
||||||
|
|
||||||
# VS Code extension recommendations
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/extensions.json
|
|
||||||
|
|
||||||
# Ignore file for editors like Helix
|
# Ignore file for editors like Helix
|
||||||
.ignore
|
.ignore
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
tasks:
|
|
||||||
- init: /workspace/rustlings/install.sh
|
|
||||||
command: /workspace/.cargo/bin/rustlings watch
|
|
||||||
|
|
||||||
vscode:
|
|
||||||
extensions:
|
|
||||||
- rust-lang.rust-analyzer@0.3.1348
|
|
5
.vscode/extensions.json
vendored
5
.vscode/extensions.json
vendored
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
"recommendations": [
|
|
||||||
"rust-lang.rust-analyzer"
|
|
||||||
]
|
|
||||||
}
|
|
77
README.md
77
README.md
|
@ -18,78 +18,7 @@ _Note: If you're on Linux, make sure you've installed gcc. Deb: `sudo apt instal
|
||||||
|
|
||||||
You will need to have Rust installed. You can get it by visiting <https://rustup.rs>. This'll also install Cargo, Rust's package/project manager.
|
You will need to have Rust installed. You can get it by visiting <https://rustup.rs>. This'll also install Cargo, Rust's package/project manager.
|
||||||
|
|
||||||
## MacOS/Linux
|
<!-- TODO: Installation with Cargo -->
|
||||||
|
|
||||||
Just run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash
|
|
||||||
```
|
|
||||||
|
|
||||||
Or if you want it to be installed to a different path:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
curl -L https://raw.githubusercontent.com/rust-lang/rustlings/main/install.sh | bash -s mypath/
|
|
||||||
```
|
|
||||||
|
|
||||||
This will install Rustlings and give you access to the `rustlings` command. Run it to get started!
|
|
||||||
|
|
||||||
### Nix
|
|
||||||
|
|
||||||
Basically: Clone the repository at the latest tag, finally run `nix develop` or `nix-shell`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# find out the latest version at https://github.com/rust-lang/rustlings/releases/latest (on edit 5.6.1)
|
|
||||||
git clone -b 5.6.1 --depth 1 https://github.com/rust-lang/rustlings
|
|
||||||
cd rustlings
|
|
||||||
# if nix version > 2.3
|
|
||||||
nix develop
|
|
||||||
# if nix version <= 2.3
|
|
||||||
nix-shell
|
|
||||||
```
|
|
||||||
|
|
||||||
## Windows
|
|
||||||
|
|
||||||
In PowerShell (Run as Administrator), set `ExecutionPolicy` to `RemoteSigned`:
|
|
||||||
|
|
||||||
```ps1
|
|
||||||
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, you can run:
|
|
||||||
|
|
||||||
```ps1
|
|
||||||
Start-BitsTransfer -Source https://raw.githubusercontent.com/rust-lang/rustlings/main/install.ps1 -Destination $env:TMP/install_rustlings.ps1; Unblock-File $env:TMP/install_rustlings.ps1; Invoke-Expression $env:TMP/install_rustlings.ps1
|
|
||||||
```
|
|
||||||
|
|
||||||
To install Rustlings. Same as on MacOS/Linux, you will have access to the `rustlings` command after it. Keep in mind that this works best in PowerShell, and any other terminals may give you errors.
|
|
||||||
|
|
||||||
If you get a permission denied message, you might have to exclude the directory where you cloned Rustlings in your antivirus.
|
|
||||||
|
|
||||||
## Browser
|
|
||||||
|
|
||||||
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/rust-lang/rustlings)
|
|
||||||
|
|
||||||
[![Open Rustlings On Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new/?repo=rust-lang%2Frustlings&ref=main)
|
|
||||||
|
|
||||||
## Manually
|
|
||||||
|
|
||||||
Basically: Clone the repository at the latest tag, run `cargo install --path .`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# find out the latest version at https://github.com/rust-lang/rustlings/releases/latest (on edit 5.6.1)
|
|
||||||
git clone -b 5.6.1 --depth 1 https://github.com/rust-lang/rustlings
|
|
||||||
cd rustlings
|
|
||||||
cargo install --force --path .
|
|
||||||
```
|
|
||||||
|
|
||||||
If there are installation errors, ensure that your toolchain is up to date. For the latest, run:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
rustup update
|
|
||||||
```
|
|
||||||
|
|
||||||
Then, same as above, run `rustlings` to get started.
|
|
||||||
|
|
||||||
## Doing exercises
|
## Doing exercises
|
||||||
|
|
||||||
|
@ -138,10 +67,6 @@ rustlings list
|
||||||
|
|
||||||
After every couple of sections, there will be a quiz that'll test your knowledge on a bunch of sections at once. These quizzes are found in `exercises/quizN.rs`.
|
After every couple of sections, there will be a quiz that'll test your knowledge on a bunch of sections at once. These quizzes are found in `exercises/quizN.rs`.
|
||||||
|
|
||||||
## Enabling `rust-analyzer`
|
|
||||||
|
|
||||||
Run the command `rustlings lsp` which will generate a `rust-project.json` at the root of the project, this allows [rust-analyzer](https://rust-analyzer.github.io/) to parse each exercise.
|
|
||||||
|
|
||||||
## Continuing On
|
## Continuing On
|
||||||
|
|
||||||
Once you've completed Rustlings, put your new knowledge to good use! Continue practicing your Rust skills by building your own projects, contributing to Rustlings, or finding other open-source projects to contribute to.
|
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.
|
||||||
|
|
78
flake.lock
78
flake.lock
|
@ -1,78 +0,0 @@
|
||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1673956053,
|
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1692799911,
|
|
||||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1694183432,
|
|
||||||
"narHash": "sha256-YyPGNapgZNNj51ylQMw9lAgvxtM2ai1HZVUu3GS8Fng=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "db9208ab987cdeeedf78ad9b4cf3c55f5ebd269b",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
78
flake.nix
78
flake.nix
|
@ -1,78 +0,0 @@
|
||||||
{
|
|
||||||
description = "Small exercises to get you used to reading and writing Rust code";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
flake-compat = {
|
|
||||||
url = "github:edolstra/flake-compat";
|
|
||||||
flake = false;
|
|
||||||
};
|
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, flake-utils, nixpkgs, ... }:
|
|
||||||
flake-utils.lib.eachDefaultSystem (system:
|
|
||||||
let
|
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
|
|
||||||
cargoBuildInputs = with pkgs; lib.optionals stdenv.isDarwin [
|
|
||||||
darwin.apple_sdk.frameworks.CoreServices
|
|
||||||
];
|
|
||||||
|
|
||||||
rustlings =
|
|
||||||
pkgs.rustPlatform.buildRustPackage {
|
|
||||||
name = "rustlings";
|
|
||||||
version = "5.6.1";
|
|
||||||
|
|
||||||
buildInputs = cargoBuildInputs;
|
|
||||||
nativeBuildInputs = [pkgs.git];
|
|
||||||
|
|
||||||
src = with pkgs.lib; cleanSourceWith {
|
|
||||||
src = self;
|
|
||||||
# a function that returns a bool determining if the path should be included in the cleaned source
|
|
||||||
filter = path: type:
|
|
||||||
let
|
|
||||||
# filename
|
|
||||||
baseName = builtins.baseNameOf (toString path);
|
|
||||||
# path from root directory
|
|
||||||
path' = builtins.replaceStrings [ "${self}/" ] [ "" ] path;
|
|
||||||
# checks if path is in the directory
|
|
||||||
inDirectory = directory: hasPrefix directory path';
|
|
||||||
in
|
|
||||||
inDirectory "src" ||
|
|
||||||
inDirectory "tests" ||
|
|
||||||
hasPrefix "Cargo" baseName ||
|
|
||||||
baseName == "info.toml";
|
|
||||||
};
|
|
||||||
|
|
||||||
cargoLock.lockFile = ./Cargo.lock;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
devShell = pkgs.mkShell {
|
|
||||||
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
|
||||||
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
cargo
|
|
||||||
rustc
|
|
||||||
rust-analyzer
|
|
||||||
rustlings
|
|
||||||
rustfmt
|
|
||||||
clippy
|
|
||||||
] ++ cargoBuildInputs;
|
|
||||||
};
|
|
||||||
apps = let
|
|
||||||
rustlings-app = {
|
|
||||||
type = "app";
|
|
||||||
program = "${rustlings}/bin/rustlings";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
default = rustlings-app;
|
|
||||||
rustlings = rustlings-app;
|
|
||||||
};
|
|
||||||
packages = {
|
|
||||||
inherit rustlings;
|
|
||||||
default = rustlings;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
(import (let lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
|
||||||
in fetchTarball {
|
|
||||||
url =
|
|
||||||
"https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
|
||||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
|
||||||
}) { src = ./.; }).shellNix
|
|
Loading…
Reference in a new issue