Skip to main content

peakrdl_rust/
access.rs

1//! Marker types for read/write access
2
3/// Marker trait for types representing read/write access
4#[allow(private_bounds)]
5pub trait Access: Sealed + Copy {}
6
7/// Read-write register access token
8#[derive(Debug, Copy, Clone, PartialEq, Eq)]
9pub struct RW;
10
11/// Read-only register access token
12#[derive(Debug, Copy, Clone, PartialEq, Eq)]
13pub struct R;
14
15/// Write-only register access token
16#[derive(Debug, Copy, Clone, PartialEq, Eq)]
17pub struct W;
18
19impl Access for R {}
20impl Access for W {}
21impl Access for RW {}
22
23trait Sealed {}
24impl Sealed for R {}
25impl Sealed for W {}
26impl Sealed for RW {}
27
28/// Marker trait for read access
29pub trait Read: Access {}
30impl Read for RW {}
31impl Read for R {}
32
33/// Marker trait for write access
34pub trait Write: Access {}
35impl Write for RW {}
36impl Write for W {}