use std::fmt;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct UsbfsConnectInfo {
devnum: u32,
slow: u8,
}
impl UsbfsConnectInfo {
pub const fn new() -> Self {
Self { devnum: 0, slow: 0 }
}
pub const fn create(devnum: u32, slow: u8) -> Self {
Self { devnum, slow }
}
pub const fn devnum(&self) -> u32 {
self.devnum
}
pub fn set_devnum(&mut self, devnum: u32) {
self.devnum = devnum;
}
pub fn with_devnum(mut self, devnum: u32) -> Self {
self.set_devnum(devnum);
self
}
pub const fn slow(&self) -> u8 {
self.slow
}
pub fn set_slow(&mut self, slow: u8) {
self.slow = slow;
}
pub fn with_slow(mut self, slow: u8) -> Self {
self.set_slow(slow);
self
}
}
impl fmt::Display for UsbfsConnectInfo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{{")?;
write!(f, r#""devnum": {}, "#, self.devnum)?;
write!(f, r#""slow": {}"#, self.slow)?;
write!(f, "}}")
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_usbfs_connect_info() {
let exp_devnum = 42;
let exp_slow = 1;
let exp_info = UsbfsConnectInfo::create(exp_devnum, exp_slow);
let mut null_info = UsbfsConnectInfo::new();
assert_eq!(exp_info.devnum(), exp_devnum);
assert_eq!(exp_info.slow(), exp_slow);
assert_eq!(null_info.devnum(), 0);
assert_eq!(null_info.slow(), 0);
null_info.set_devnum(exp_devnum);
assert_eq!(null_info.devnum(), exp_devnum);
null_info.set_slow(exp_slow);
assert_eq!(null_info.slow(), exp_slow);
assert_eq!(
UsbfsConnectInfo::new().with_devnum(exp_devnum).devnum(),
exp_devnum
);
assert_eq!(UsbfsConnectInfo::new().with_slow(exp_slow).slow(), exp_slow);
}
}