Working with raw bit string data. The BitString type should be used instead of a String type when not utf8 encoded.


pub type BitString =


pub external fn append(
  first: BitString,
  second: BitString,
) -> BitString

Creates a new bit string by joining two binaries.


> append(to: from_string("butter"), suffix: from_string("fly"))
pub external fn byte_size(BitString) -> Int

Returns an integer which is the number of bytes in the bit string.

pub external fn from_string(String) -> BitString

Converts a UTF-8 String type into a raw BitString type.

pub external fn int_from_u32(BitString) -> Result(Int, Nil)

Converts unsigned 32 bits to an integer.

Returns an error if the bit string is not 32 bits in length.

pub external fn int_to_u32(Int) -> Result(BitString, Nil)

Converts an integer to unsigned 32 bits.

Returns an error if integer is less than zero or equal to or larger than 2^32.

pub fn is_utf8(bits: BitString) -> Bool

Tests to see whether a bit string is valid UTF-8.

pub external fn part(
  string: BitString,
  position: Int,
  length: Int,
) -> Result(BitString, Nil)

Extracts part of a bit string.

BitString part will start at given position and continue up to specified length. A negative length can be used to extract bytes at the end of a bit string.

pub fn to_string(bits: BitString) -> Result(String, Nil)

Converts a bit string to a string.

Returns an error if the bit string is invalid UTF-8 data.