Skip to content
forked from Jezza/mutf8

Basic support for mutf8 strings in Rust.

License

Notifications You must be signed in to change notification settings

DomWilliams0/mutf8

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MUTF-8

Usage

fn main() {
    let output: Cow<u8> = mutf8::utf8_to_mutf8("Hello, \0World");

    // `output` contains no NUL bytes.
}

There's also a MString and mstr struct.
These are the counterparts to String and str within the standard library.

fn main() {
    let data = mstr::from_utf8(b"\0");
	assert_eq!(data.len(), 2);
}

About

This crate allows converting UTF-8 to and from MUTF-8.

Some data formats, such as the JVM classfile, make use of an altered UTF-8 encoding.
This one in particular is the MUTF-8 variant.

It allows a NUL byte to be encoded without using the NUL byte itself.

WIP

The algorithm itself is done, and useable.
It works as well as any other.

The reason I still call this crate WIP is because of the two String structs.
I'm not happy with them.

I do use this crate for a couple of projects, but none of them make use of the structs themselves.

I typically use this crate as just a jump from a [u8] to a Cow<str>.
So, until I work out where I want to go with this crate, it's probably going to stay like this.

About

Basic support for mutf8 strings in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%