Crates.io | simple_slip |
lib.rs | simple_slip |
version | 0.1.2 |
source | src |
created_at | 2022-08-07 01:15:10.664173 |
updated_at | 2022-09-01 17:49:39.687794 |
description | A small and simple library for SLIP encoding |
homepage | |
repository | https://github.com/sam-peach/simple_slip |
max_upload_size | |
id | 640061 |
size | 15,355 |
A simple, lightweight implementation of RFC 1055 SLIP encoding for Rust!
SLIP (serial line internet protocol) encoding is a very simple way of packaging so it can be transmitted to some other receiver. I'd highly recommend reading the Wikipedia article on the topic for some more insight!
SLIP is used in encoding data to be sent and decoding data to be read.
NOTE: Each packet will start and end with an END
(0xC0) byte.
use simple_slip::encode;
let input: Vec<u8> = vec![0x01, 0xDB, 0x49, 0xC0, 0x15];
let expected: Vec<u8> = vec![0xC0, 0x01, 0xDB, 0xDD, 0x49, 0xDB, 0xDC, 0x15, 0xC0];
let result: Vec<u8> = encode(&input).unwrap();
assert_eq!(result, expected);
NOTE: Each packet will start decoding from the second occurrence of the END
(0xC0) byte.
The following data array would only decode 0x01
as it's the only byte after the second END
(0xC0) byte:
[0xA1, 0xA2, 0xA3, 0xC0, 0xC0, 0x01] --decode--> [0x01]
use simple_slip::decode;
let input: Vec<u8> = vec![0xA1, 0xA2, 0xA3, 0xC0, 0xC0, 0x01, 0xDB, 0xDD, 0x49, 0xDB, 0xDC, 0x15, 0xC0];
let expected: Vec<u8> = vec![0x01, 0xDB, 0x49, 0xC0, 0x15];
let result: Vec<u8> = decode(&input).unwrap();
assert_eq!(result, expected);