[−][src]Function twitchchat::decode::decode_one
pub fn decode_one(input: &str) -> Result<(usize, Message<&str>), 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: ":test!test@test JOIN #museun\r\n", tags: Tags::default(), prefix: Some(decode::Prefix::User { nick: "test" }), command: "JOIN", args: "#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: ":test!test@test JOIN #museun\r\n", tags: Tags::default(), prefix: Some(decode::Prefix::User { nick: "test" }), command: "JOIN", args: "#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: ":test!test@test JOIN #shaken_bot\r\n", tags: Tags::default(), prefix: Some(decode::Prefix::User { nick: "test" }), command: "JOIN", args: "#shaken_bot", data: None, }; assert_eq!(message, expected);