Crate vatfluid [] [src]

Zero allocation UTF-8 validation on &[u8] slices. Allows for incomplete UTF-8 sequences. Returns the position in the buffer that has been validated successfully.

use vatfluid::{Success, validate, UTF8Validation};

// A `Complete` result.
let buf = b"Hello, World!";
match validate(buf) {
    Ok(Success::Complete(pos)) => {
        assert!(pos == 13);
        assert!(pos == buf.len());
    }
    Ok(Success::Incomplete(_needed, _pos)) => {
        assert!(false);
    }
    Err(_e) => {
        assert!(false);
    }
}

// An `Incomplete` result.
let inc_buf = vec![0xc2, 0xa2, 0xc2];
match validate(&inc_buf) {
    Ok(Success::Complete(_pos)) => {
        assert!(false);
    }
    Ok(Success::Incomplete(needed, pos)) => {
        assert!(needed == 1);
        assert!(pos == 2);
    }
    Err(_e) => {
        assert!(false);
    }
}

// An `Error` result.
let error_buf = vec![0xf4, 0x90, 0x80, 0x80];
match validate(&error_buf) {
    Ok(Success::Complete(_pos)) => {
        assert!(false);
    }
    Ok(Success::Incomplete(_needed, _pos)) => {
        assert!(false);
    }
    Err(e) => {
        assert!(e == UTF8Validation::MaximumCodePoint);
    }
}

Enums

Success

A successful validation result.

UTF8Validation

UTF-8 Validation Errors

Functions

validate

Validate a UTF-8 sequence