when I looked into lib.rs I found out this: #![no_std] #![doc(html_root_url = "https://docs.rs/nrf52840-hal/0.14.0")] use embedded_hal as hal; pub use nrf_hal_common::*; pub mod prelude { pub use crate::hal::prelude::_; pub use nrf_hal_common::prelude::_; pub use crate::time::U32Ext; } pub use crate::ccm::Ccm; pub use crate::clocks::Clocks; pub use crate::delay::Delay; pub use crate::ecb::Ecb; pub use crate::saadc::Saadc; pub use crate::spim::Spim; pub use crate::temp::Temp; pub use crate::timer::Timer; pub use crate::uarte::Uarte; So crate for uart is not public, that is why I do not see it. But I wonder why? Why a crate that its only porpouse is to implement emedded_hal traits exposes a struct that does not implement any embedded hal trait, and at the same time hide UART implementation? I do not understand it. I also do not belive that no one had a need to use uart from embedded_hal from this crate, and it makes me belive that I'm doing something wrong :(