diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 350d22c5b2be703485c77d4189216bb1e1dbbdf1..eada477a98319a71190b52ee9a6f7529a1ab4ff4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,7 +11,7 @@ cache:
     - target/
 
 linux:
-  image: 'rust:1.30.0'
+  image: 'rust:1.31.0'
   script:
     - cargo build
     - make tests
@@ -30,7 +30,7 @@ redox:
     - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA12E97F0881517F
     - add-apt-repository 'deb https://static.redox-os.org/toolchain/apt /'
     - apt-get update -qq && apt-get install -qq x86-64-unknown-redox-gcc
-    - rustup default nightly-2018-07-18
+    - rustup default nightly-2018-10-05
     - rustup target add x86_64-unknown-redox
   script:
     - make TOOLCHAIN= REDOX=1
diff --git a/Cargo.toml b/Cargo.toml
index 09781d69b4ecef065c5a3080d53d511534f07b23..95b7cd34027537fafe5cadafe901418b64fe0252 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,6 +17,7 @@ name = "ion-shell"
 readme = "README.md"
 repository = "https://gitlab.redox-os.org/redox-os/ion"
 version = "1.0.0-alpha"
+edition = "2018"
 
 [workspace]
 members = [
diff --git a/Makefile b/Makefile
index 880eb57309339fd99deb8cd689e409489f7796aa..c455fbc515ac214435d295ce9444ac4af8faf646 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ RELEASE = debug
 DEBUG ?= 0
 VENDORED = 0
 REDOX ?= 0
-TOOLCHAIN ?= 1.30.0
+TOOLCHAIN ?= 1.31.0
 
 GIT_REVISION=git_revision.txt
 SRC=Cargo.toml src/* src/*/* members/* members/*/*
diff --git a/README.md b/README.md
index b0709aba2773228b6e088684f34f6f98e89e5836..c61747bea861819ca9faaec2559775dcb220db2b 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,7 @@ with **mdbook**.
 
 ## Pop!\_OS / Ubuntu
 
-The following PPA supports the 18.04 (bionic) and 18.10 (cosmic) releases. Bionic builds were made using the Pop\_OS PPA's rustc 1.30.0 package.
+The following PPA supports the 18.04 (bionic) and 18.10 (cosmic) releases. Bionic builds were made using the Pop\_OS PPA's rustc 1.31.0 package.
 
 ```
 sudo add-apt-repository ppa:mmstick76/ion-shell
@@ -41,11 +41,11 @@ sudo add-apt-repository ppa:mmstick76/ion-shell
 # Build dependencies
 
 Those who are developing software with Rust should install the [Rustup toolchain manager](https://rustup.rs/).
-After installing rustup, run `rustup default 1.30.0` to set your Rust toolchain to the version that Ion is
-targeting at the moment. To build for Redox OS, `rustup default nightly` is required to build the Redox
+After installing rustup, run `rustup override 1.31.0` to set your Rust toolchain to the version that Ion is
+targeting at the moment. To build for Redox OS, `rustup override set nightly` is required to build the Redox
 dependencies.
 
-> Distribution packagers must ensure that their distribution has packaged both cargo and rustc 1.30.0.
+> Distribution packagers must ensure that their distribution has packaged both cargo and rustc 1.31.0.
 > Distribution packagers should also currently build Ion from git. Release tarballs have not been made yet
 > due to the shell being incomplete in a few remaining areas.
 
diff --git a/src/lib/parser/statement/parse.rs b/src/lib/parser/statement/parse.rs
index b6eb46a4eb0ea5036238e1777c49f1ca5e8a5e6c..1cdff60026838fa94df864d68525399c4973525f 100644
--- a/src/lib/parser/statement/parse.rs
+++ b/src/lib/parser/statement/parse.rs
@@ -118,7 +118,7 @@ pub(crate) fn parse(code: &str) -> Statement {
             let mut variables = None;
 
             if cmd.len() > 5 {
-                let mut cmdb = cmd.as_bytes();
+                let cmdb = cmd.as_bytes();
                 for start in 0..cmd.len() - 4 {
                     if &cmdb[start..start + 4] == b" in " {
                         variables = Some(cmd[..start].split_whitespace().map(Into::into).collect());
diff --git a/src/lib/shell/flow_control.rs b/src/lib/shell/flow_control.rs
index 21548ca10fe1fc355239c962a622ec40c232ceec..682fb65bad990e5fd056f6401be520e2f91302c0 100644
--- a/src/lib/shell/flow_control.rs
+++ b/src/lib/shell/flow_control.rs
@@ -234,7 +234,7 @@ pub(crate) fn insert_statement(
                         1 => {
                             // Try to insert into last ElseIf expression if there's no previous
                             // statement.
-                            if let Some(mut eif) = else_if.last_mut() {
+                            if let Some(eif) = else_if.last_mut() {
                                 if eif.success.is_empty() {
                                     eif.expression.push(statement.clone());
                                 } else {
diff --git a/src/lib/shell/variables/mod.rs b/src/lib/shell/variables/mod.rs
index 6690185c0ab3e93e4e0ee9d261e41d6dab7e55d4..1d9438d01923bcbd5dba22032e31d0425e2dfac1 100644
--- a/src/lib/shell/variables/mod.rs
+++ b/src/lib/shell/variables/mod.rs
@@ -469,7 +469,7 @@ impl Variables {
 
             macro_rules! handle_action {
                 ($value:ident, $variant:tt) => {{
-                    if let VariableType::$variant(mut with) = var {
+                    if let VariableType::$variant(with) = var {
                         mem::replace($value, with);
                         None
                     } else {