use std::str::FromStr; use crate::{ Request, commands::{ Command, RequestParserError, RequestParserResult, ResponseAttributes, ResponseParserError, }, common::OneOrRange, }; pub struct Delete; impl Command for Delete { type Request = OneOrRange; type Response = (); const COMMAND: &'static str = "delete"; fn serialize_request(&self, request: Self::Request) -> String { format!("{} {}", Self::COMMAND, request) } fn parse_request(mut parts: std::str::SplitWhitespace<'_>) -> RequestParserResult<'_> { let pos_or_range = parts.next().ok_or(RequestParserError::UnexpectedEOF)?; let one_or_range = OneOrRange::from_str(pos_or_range) .map_err(|_| RequestParserError::SyntaxError(0, pos_or_range.to_string()))?; debug_assert!(parts.next().is_none()); Ok((Request::Delete(one_or_range), "")) } fn parse_response( parts: ResponseAttributes<'_>, ) -> Result> { debug_assert!(parts.is_empty()); Ok(()) } }