diff --git a/README.md b/README.md index efa2f79df3d04611ebf7ed370e260f56040a02d6..b45d4e195b24c78e32735e5676d1c3067756d80d 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,11 @@ Adds debug to volatile register when compiled with `--features debug-fmt`. +## Caveats + +Notice, the current implementation requres a nightly toolchain (`feature(specilization`)). +This can be + ``` rust extern crate volatile_register; use std::mem; diff --git a/examples/example.rs b/examples/example.rs index c0e601ca58b19e65b16ebf376acce3944cff78fd..411c6463cab05a6efe0f6511bbb929d3587f6846 100644 --- a/examples/example.rs +++ b/examples/example.rs @@ -1,20 +1,25 @@ +//! Example to show the use of debug output for small register arrays +//! +//! > cargo run --example example2 --features debug-fmt +//! + extern crate volatile_register; use std::mem; -use volatile_register::{RW}; +use volatile_register::RW; - #[repr(C)] - #[derive(Debug)] - pub struct Nvic { - /// Interrupt Set-Enable - pub iser: [RW<u32>; 8], - reserved0: [u32; 24], - /// Interrupt Clear-Enable - pub icer: [RW<u32>; 8], - reserved1: [u32; 24], - // .. more registers .. +#[repr(C)] +#[derive(Debug)] +pub struct Nvic { + /// Interrupt Set-Enable + pub iser: [RW<u32>; 8], + reserved0: [u32; 24], + /// Interrupt Clear-Enable + pub icer: [RW<u32>; 8], + reserved1: [u32; 24], + // .. more registers .. } fn main() { - let r : Nvic = unsafe {mem::uninitialized() }; + let r: Nvic = unsafe { mem::uninitialized() }; println!("{:?}", r); -} \ No newline at end of file +} diff --git a/examples/example2.rs b/examples/example2.rs index 8241deadb82fc53ad2e3f52e69f4809d0dc666a2..1970e6a14f5dea21db65cb716fa8d89ae26469ab 100644 --- a/examples/example2.rs +++ b/examples/example2.rs @@ -1,3 +1,8 @@ +//! Example to show the use of debug output for big register arrays +//! +//! > cargo run --example example2 --features debug-fmt +//! + extern crate array_debug; extern crate volatile_register; diff --git a/src/lib.rs b/src/lib.rs index b5cffc8e00f025580e1417574adf4e22832a4687..99522ceb3bd055fffec58b652baba436643eb01a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,14 +27,13 @@ #![deny(missing_docs)] #![no_std] -#![feature(specialization)] +#![cfg_attr(feature = "debug-fmt", feature(specialization))] extern crate vcell; #[cfg(feature = "debug-fmt")] -use core::fmt; +use core::fmt::{self, Debug, UpperHex}; #[cfg(feature = "debug-fmt")] -use core::fmt::{Debug, UpperHex}; use vcell::VolatileCell; /// Read-Only register