Skip to content
/ uuidz Public

Zig package for generating and parsing UUIDs based on RFC 9562

License

Notifications You must be signed in to change notification settings

babiabeo/uuidz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uuidz

A Zig package for generating and parsing UUIDs based on RFC 9562.

Installation

First, to add uuidz package to your build.zig.zon, run:

zig fetch --save git+https://github.com/babiabeo/uuidz.git#main

Then, in build.zig, add uuidz as a dependency to your program:

// ...
const uuidz = b.dependency("uuidz", .{
    .target = target,
    .optimize = optimize,
});

exe.root_module.addImport("uuidz", uuidz.module("uuidz"));
// ...

That's it! Now you can start your journey with uuidz :)

Usage

Generating

uuidz supports generating all versions defined in RFC 9562 (except version 2).

const uuidz = @import("uuidz");

pub fn main() void {
    _ = uuidz.v1.new(); // Version 1
    _ = uuidz.v3.new(); // Version 3
    _ = uuidz.v4.new(); // Version 4
    _ = uuidz.v5.new(); // Version 5
    _ = uuidz.v6.new(); // Version 6
    _ = uuidz.v7.new(); // Version 7
    _ = uuidz.v8.new(); // Version 8
}

There is also uuidz.ns which is a collection of pre-defined namespace IDs as provided in RFC. These namespaces are usually used when creating uuid version 3 or 5.

_ = uuidz.ns.DNS;
_ = uuidz.ns.URL;
_ = uuidz.ns.OID;
_ = uuidz.ns.X500;

Parsing

uuidz.UUID.parse allows you to parse an uuid from a string. Only one of these formats are supported:

  • xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (Standard form)
  • urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (URN form)
  • {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (Microsoft's curly braced style)
_ = uuidz.UUID.parse("b953498c-fd02-449d-9dc6-c93e5e7985b2");          // valid
_ = uuidz.UUID.parse("urn:uuid:b953498c-fd02-449d-9dc6-c93e5e7985b2"); // valid
_ = uuidz.UUID.parse("{b953498c-fd02-449d-9dc6-c93e5e7985b2}");        // valid
_ = uuidz.UUID.parse("b953498cfd02449d9dc6c93e5e7985b2");              // error: Unsupported form

License

MIT

About

Zig package for generating and parsing UUIDs based on RFC 9562

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages