pub struct AtParser<'a, T, const SIZE: usize>{
pub commands: &'a mut [(&'static str, &'a mut T)],
}Expand description
The main AT command parser
Generic over T which must implement the AtContext<SIZE> trait,
and over the const SIZE which determines the response buffer size.
§Generic Design
The parser is generic over the command handler type T and response size SIZE to allow
compile-time type checking when all handlers are of the same type. This provides:
- Type safety: Compile-time verification of handler types
- Zero overhead: No dynamic dispatch when using concrete types
- Flexibility: Can be used with trait objects (
dyn AtContext<SIZE>) for mixed handler types
§Usage Patterns
§With trait objects (recommended for mixed types):
const SIZE: usize = 64;
let mut parser: AtParser<dyn AtContext<SIZE>, SIZE> = AtParser::new();
let commands: &mut [(&str, &mut dyn AtContext<SIZE>)] = &mut [
("AT+ECHO", &mut echo_handler),
("AT+RST", &mut reset_handler),
];
parser.set_commands(commands);§With concrete types (for homogeneous handlers):
const SIZE: usize = 64;
let mut parser: AtParser<MyHandler, SIZE> = AtParser::new();
let commands: &mut [(&str, &mut MyHandler)] = &mut [
("AT+CMD1", &mut handler1),
("AT+CMD2", &mut handler2),
];
parser.set_commands(commands);Fields§
§commands: &'a mut [(&'static str, &'a mut T)]Array of registered commands with their name and handler
Implementations§
Auto Trait Implementations§
impl<'a, T, const SIZE: usize> Freeze for AtParser<'a, T, SIZE>where
T: ?Sized,
impl<'a, T, const SIZE: usize> RefUnwindSafe for AtParser<'a, T, SIZE>where
T: RefUnwindSafe + ?Sized,
impl<'a, T, const SIZE: usize> Send for AtParser<'a, T, SIZE>
impl<'a, T, const SIZE: usize> Sync for AtParser<'a, T, SIZE>
impl<'a, T, const SIZE: usize> Unpin for AtParser<'a, T, SIZE>where
T: ?Sized,
impl<'a, T, const SIZE: usize> UnsafeUnpin for AtParser<'a, T, SIZE>where
T: ?Sized,
impl<'a, T, const SIZE: usize> !UnwindSafe for AtParser<'a, T, SIZE>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more