rfc1939/update/
command.rs

1use crate::types::command::Quit;
2use nom::{
3    bytes::complete::{tag, tag_no_case},
4    combinator::map,
5    sequence::terminated,
6    IResult,
7};
8
9// ################################################################################
10/// QUIT
11/// 
12/// **Arguments** none
13/// 
14/// **Restrictions** none
15/// 
16/// **Examples**
17/// 
18///     C: QUIT
19// ################################################################################
20pub fn quit(s: &[u8]) -> Option<Quit> {
21    match quit_parser(s) {
22        Ok((_, x)) => Some(x),
23        Err(_) => None,
24    }
25}
26
27pub(crate) fn quit_parser(s: &[u8]) -> IResult<&[u8], Quit> {
28    map(terminated(tag_no_case(b"QUIT"), tag(b"\r\n")), |_| Quit)(s)
29}
30
31#[cfg(test)]
32mod tests {
33    use super::*;
34    #[test]
35    fn test_quit() {
36        assert_eq!(quit(b"QUIT\r\n").unwrap(), Quit);
37    }
38}