Use Rust 2018 edition
diff --git a/src/ble_parser.rs b/src/ble_parser.rs
index 32d1cf4..15f3279 100644
--- a/src/ble_parser.rs
+++ b/src/ble_parser.rs
@@ -41,8 +41,8 @@
 
 #[cfg(test)]
 mod test {
-    use ble_parser::*;
-    use simple_ble::BUFFER_SIZE_SCAN;
+    use crate::ble_parser::*;
+    use crate::simple_ble::BUFFER_SIZE_SCAN;
 
     #[test]
     pub fn extracts_data_for_ids_correctly() {
diff --git a/src/buttons.rs b/src/buttons.rs
index 30987df..1bd29d3 100644
--- a/src/buttons.rs
+++ b/src/buttons.rs
@@ -1,9 +1,9 @@
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
-use result;
-use result::TockResult;
-use result::TockValue;
-use syscalls;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::result;
+use crate::result::TockResult;
+use crate::result::TockValue;
+use crate::syscalls;
 
 const DRIVER_NUMBER: usize = 0x00003;
 
diff --git a/src/callback.rs b/src/callback.rs
index caf6b9a..9685d34 100644
--- a/src/callback.rs
+++ b/src/callback.rs
@@ -1,5 +1,5 @@
+use crate::syscalls;
 use core::ptr;
-use syscalls;
 
 pub trait SubscribableCallback {
     fn call_rust(&mut self, arg0: usize, arg1: usize, arg2: usize);
diff --git a/src/console.rs b/src/console.rs
index 9570cdb..d282a4e 100644
--- a/src/console.rs
+++ b/src/console.rs
@@ -1,9 +1,9 @@
+use crate::syscalls;
 use alloc::string::String;
 use core::cell::Cell;
 use core::fmt;
 use core::result::Result;
 use core::slice;
-use syscalls;
 
 const DRIVER_NUMBER: usize = 1;
 
diff --git a/src/debug.rs b/src/debug.rs
index ec5c670..ef1e505 100644
--- a/src/debug.rs
+++ b/src/debug.rs
@@ -1,6 +1,6 @@
 //! Heapless debugging functions for Tock troubleshooting
 
-use console::Console;
+use crate::console::Console;
 
 pub fn print_as_hex(value: usize) {
     let mut buffer = [b'\n'; 11];
diff --git a/src/electronics/shift_register.rs b/src/electronics/shift_register.rs
index b6209e5..9f4c664 100644
--- a/src/electronics/shift_register.rs
+++ b/src/electronics/shift_register.rs
@@ -1,4 +1,4 @@
-use gpio::GpioPinWrite;
+use crate::gpio::GpioPinWrite;
 
 pub struct ShiftRegister {
     data_pin: GpioPinWrite,
diff --git a/src/entry_point.rs b/src/entry_point.rs
index 3f08ced..21f0667 100644
--- a/src/entry_point.rs
+++ b/src/entry_point.rs
@@ -1,13 +1,13 @@
 extern crate linked_list_allocator;
 
 use self::linked_list_allocator::Heap;
+use crate::syscalls;
 use core::alloc::Alloc;
 use core::alloc::GlobalAlloc;
 use core::alloc::Layout;
 use core::mem;
 use core::ptr;
 use core::ptr::NonNull;
-use syscalls;
 
 const HEAP_SIZE: usize = 0x400;
 
diff --git a/src/fmt.rs b/src/fmt.rs
index 120d0ba..57ba617 100644
--- a/src/fmt.rs
+++ b/src/fmt.rs
@@ -55,7 +55,7 @@
 
 #[cfg(test)]
 mod test {
-    use fmt::*;
+    use super::*;
 
     #[test]
     pub fn digits_are_correctly_rendered_in_decimal() {
diff --git a/src/gpio.rs b/src/gpio.rs
index bc09050..f476eec 100644
--- a/src/gpio.rs
+++ b/src/gpio.rs
@@ -1,4 +1,4 @@
-use syscalls;
+use crate::syscalls;
 
 const DRIVER_NUMBER: usize = 0x00004;
 mod gpio_commands {
diff --git a/src/ipc/ble_ess.rs b/src/ipc/ble_ess.rs
index be03337..e4637b6 100644
--- a/src/ipc/ble_ess.rs
+++ b/src/ipc/ble_ess.rs
@@ -1,7 +1,7 @@
+use crate::ipc::IPCBuffer;
+use crate::ipc::ServerHandle;
+use crate::shared_memory::SharedMemory;
 use alloc::string::String;
-use ipc::IPCBuffer;
-use ipc::ServerHandle;
-use shared_memory::SharedMemory;
 
 #[repr(u32)]
 pub enum ReadingType {
diff --git a/src/ipc/client.rs b/src/ipc/client.rs
index dc4c933..4594f41 100644
--- a/src/ipc/client.rs
+++ b/src/ipc/client.rs
@@ -1,8 +1,8 @@
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::shared_memory::SharedMemory;
+use crate::syscalls;
 use alloc::string::String;
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
-use shared_memory::SharedMemory;
-use syscalls;
 
 const DRIVER_NUMBER: usize = 0x10000;
 
diff --git a/src/ipc/server.rs b/src/ipc/server.rs
index 3120c5a..a8f6795 100644
--- a/src/ipc/server.rs
+++ b/src/ipc/server.rs
@@ -1,7 +1,7 @@
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::syscalls;
 use core::slice;
-use syscalls;
 
 const DRIVER_NUMBER: usize = 0x10000;
 
diff --git a/src/lang_items.rs b/src/lang_items.rs
index f20d45a..6d91bb0 100644
--- a/src/lang_items.rs
+++ b/src/lang_items.rs
@@ -18,11 +18,11 @@
 //! `rustc_main`. That's covered by the `_start` function in the root of this
 //! crate.
 
+use crate::led;
+use crate::timer;
+use crate::timer::Duration;
 use core::alloc::Layout;
 use core::panic::PanicInfo;
-use led;
-use timer;
-use timer::Duration;
 
 #[lang = "start"]
 extern "C" fn start<T>(main: fn() -> T, _argc: isize, _argv: *const *const u8) -> i32
diff --git a/src/led.rs b/src/led.rs
index 994670e..6e20a3b 100644
--- a/src/led.rs
+++ b/src/led.rs
@@ -1,4 +1,4 @@
-use syscalls::command;
+use crate::syscalls::command;
 
 const DRIVER_NUMBER: usize = 0x00002;
 
diff --git a/src/sensors/mod.rs b/src/sensors/mod.rs
index 1cc492d..10f072c 100644
--- a/src/sensors/mod.rs
+++ b/src/sensors/mod.rs
@@ -1,8 +1,8 @@
+use crate::syscalls::{self, yieldk_for};
 use core::cell::Cell;
 use core::convert::From;
 use core::fmt;
 use core::mem;
-use syscalls::{self, yieldk_for};
 
 mod ninedof;
 
diff --git a/src/sensors/ninedof.rs b/src/sensors/ninedof.rs
index ad84d29..56955f3 100644
--- a/src/sensors/ninedof.rs
+++ b/src/sensors/ninedof.rs
@@ -1,7 +1,7 @@
+use crate::syscalls::{self, yieldk_for};
 use core::cell::Cell;
 use core::fmt;
 use core::mem;
-use syscalls::{self, yieldk_for};
 
 const DRIVER_NUM: usize = 0x60004;
 
diff --git a/src/shared_memory.rs b/src/shared_memory.rs
index 1d4a4f9..a8530b2 100644
--- a/src/shared_memory.rs
+++ b/src/shared_memory.rs
@@ -1,5 +1,5 @@
+use crate::syscalls;
 use core::ptr;
-use syscalls;
 
 pub struct SharedMemory<'a> {
     driver_number: usize,
diff --git a/src/simple_ble.rs b/src/simple_ble.rs
index 28182ec..4e343b9 100644
--- a/src/simple_ble.rs
+++ b/src/simple_ble.rs
@@ -1,9 +1,9 @@
-use ble_composer::BlePayload;
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
-use result;
-use shared_memory::SharedMemory;
-use syscalls;
+use crate::ble_composer::BlePayload;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::result;
+use crate::shared_memory::SharedMemory;
+use crate::syscalls;
 
 const DRIVER_NUMBER: usize = 0x30000;
 pub const MAX_PAYLOAD_SIZE: usize = 9;
diff --git a/src/syscalls.rs b/src/syscalls.rs
index 095c520..fa0362a 100644
--- a/src/syscalls.rs
+++ b/src/syscalls.rs
@@ -1,6 +1,6 @@
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
-use shared_memory::SharedMemory;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::shared_memory::SharedMemory;
 
 pub fn yieldk() {
     // Note: A process stops yielding when there is a callback ready to run,
diff --git a/src/syscalls_mock.rs b/src/syscalls_mock.rs
index 74843c6..8b60611 100644
--- a/src/syscalls_mock.rs
+++ b/src/syscalls_mock.rs
@@ -1,6 +1,6 @@
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
-use shared_memory::SharedMemory;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::shared_memory::SharedMemory;
 
 pub fn yieldk_for<F: Fn() -> bool>(_: F) {
     unimplemented()
diff --git a/src/temperature.rs b/src/temperature.rs
index cd91f76..214fb78 100644
--- a/src/temperature.rs
+++ b/src/temperature.rs
@@ -1,6 +1,6 @@
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
-use syscalls;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::syscalls;
 
 const DRIVER_NUMBER: usize = 0x60000;
 const SUBSCRIBE_CALLBACK: usize = 0;
diff --git a/src/timer.rs b/src/timer.rs
index 7a4bfaa..0a1dbfd 100644
--- a/src/timer.rs
+++ b/src/timer.rs
@@ -1,11 +1,11 @@
-use callback::CallbackSubscription;
-use callback::SubscribableCallback;
+use crate::callback::CallbackSubscription;
+use crate::callback::SubscribableCallback;
+use crate::result;
+use crate::result::TockResult;
+use crate::result::TockValue;
+use crate::syscalls;
 use core::cell::Cell;
 use core::isize;
-use result;
-use result::TockResult;
-use result::TockValue;
-use syscalls;
 
 const DRIVER_NUMBER: usize = 0x00000;