[−][src]Function twitchchat::decode_one
pub fn decode_one<'t>(
input: &'t str
) -> Result<(usize, Message<'t>), ParseError>
Tries to decode one message, returning the amount of remaining data in the input
Example
A single message
let input = ":test!test@test JOIN #museun\r\n"; let (pos, message) = decode_one(&input).unwrap(); assert_eq!(pos, 0); // no more messages were found let expected = messages::Raw { raw: Cow::Borrowed(":test!test@test JOIN #museun\r\n"), tags: Tags::default(), prefix: Some(decode::Prefix::User { nick: Cow::Borrowed("test") }), command: Cow::Borrowed("JOIN"), args: Cow::Borrowed("#museun"), data: None, }; assert_eq!(message, expected);
Multiple messages
let input = ":test!test@test JOIN #museun\r\n:test!test@test JOIN #shaken_bot\r\n"; let (pos, message) = decode_one(&input).unwrap(); assert_eq!(pos, 30); // another message probably starts at offset '30' let expected = messages::Raw { raw: Cow::Borrowed(":test!test@test JOIN #museun\r\n"), tags: Tags::default(), prefix: Some(decode::Prefix::User { nick: Cow::Borrowed("test") }), command: Cow::Borrowed("JOIN"), args: Cow::Borrowed("#museun"), data: None, }; assert_eq!(message, expected); // continue from where it left off let (pos, message) = decode_one(&input[pos..]).unwrap(); assert_eq!(pos, 0); // no more messages were found let expected = messages::Raw { raw: Cow::Borrowed(":test!test@test JOIN #shaken_bot\r\n"), tags: Tags::default(), prefix: Some(decode::Prefix::User { nick: Cow::Borrowed("test") }), command: Cow::Borrowed("JOIN"), args: Cow::Borrowed("#shaken_bot"), data: None, }; assert_eq!(message, expected);