pub fn zalgo_encode(string: &str) -> Result<String, Error>
Expand description

Takes in a string slice that consists of only printable ACII and newline characters and encodes it into a single grapheme cluster using a reversible encoding scheme.

The resulting string is a single unicode grapheme cluster and should only take up a single character space horizontally when displayed (though this can vary between platforms depending on how they deal with unicode). The resulting string will be ~2 times larger than the original in terms of bytes, and it can be decoded to recover the original string with zalgo_decode.

Errors

Returns an error if the input contains a byte that does not correspond to a printable ASCII character or newline.

Example

Basic usage:

assert_eq!(zalgo_encode("Zalgo")?, "É̺͇͌͏");

Can not encode ASCII control characters except newlines. Notably this means that this function can not encode carriage returns, which are present in e.g. line endings on Windows:

assert!(zalgo_encode("CRLF\r\n").is_err());