Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

v0 source pure

v0 - Unaudited: This is an initial version that has not yet been formally audited. A fully audited version will be pu...

Readme View source

v0 - Unaudited This is an initial version of this package that has not yet been formally audited. A fully audited version will be published as a subsequent release. Use in production at your own risk.

seqid

package seqid // import "gno.land/p/nt/seqid/v0"

Package seqid provides a simple way to have sequential IDs which will be ordered
correctly when inserted in an AVL tree.

Sample usage:

    var id seqid.ID
    var users avl.Tree

    func NewUser() {
    	users.Set(id.Next().Binary(), &User{ ... })
    }

TYPES

type ID uint64
    An ID is a simple sequential ID generator.

func FromBinary(b string) (ID, bool)
    FromBinary creates a new ID from the given string.

func (i ID) Binary() string
    Binary returns a big-endian binary representation of the ID, suitable to be
    used as an AVL key.

func (i *ID) Next() ID
    Next advances the ID i. It will panic if increasing ID would overflow.

func (i *ID) TryNext() (ID, bool)
    TryNext increases i by 1 and returns its value. It returns true if
    successful, or false if the increment would result in an overflow.

Overview

v0 - Unaudited: This is an initial version that has not yet been formally audited. A fully audited version will be published as a subsequent release. Use in production at your own risk.

Package seqid provides a simple way to have sequential IDs which will be ordered correctly when inserted in an AVL tree.

Package seqid provides a simple way to have sequential IDs which will be ordered correctly when inserted in an AVL tree.

Sample usage:

Example
1var id seqid.ID
2var users avl.Tree
3
4func NewUser() {
5	users.Set(id.Next().String(), &User{ ... })
6}

Functions 2

func FromBinary

1func FromBinary(b string) (ID, bool)
source

FromBinary creates a new ID from the given string, expected to be a binary big-endian encoding of an ID (such as that of ID.Binary). The second return value is true if the conversion was successful.

func FromString

1func FromString(b string) (ID, error)
source

FromString creates a new ID from the given string, expected to be a string representation using cford32, such as that returned by ID.String.

The encoding scheme used by cford32 allows the same ID to have many different representations (though the one returned by ID.String is only one, deterministic and safe to be used in AVL). The encoding scheme is "human-centric" and is thus case insensitive, and maps some ambiguous characters to be the same, ie. L = I = 1, O = 0. For this reason, when parsing user input to retrieve a key (encoded as a string), always sanitize it first using FromString, then run String(), instead of using the user's input directly.

Types 1

type ID

ident
1type ID uint64
source

An ID is a simple sequential ID generator.

Methods on ID

func Binary

method on ID
1func (i ID) Binary() string
source

Binary returns a big-endian binary representation of the ID, suitable to be used as an AVL key.

func Next

method on ID
1func (i *ID) Next() ID
source

Next advances the ID i. It will panic if increasing ID would overflow.

func String

method on ID
1func (i ID) String() string
source

String encodes i using cford32's compact encoding. For more information, see the documentation for package gno.land/p/nt/cford32/v0.

The result of String will be a 7-byte string for IDs [0,2^34), and a 13-byte string for all values following that. All generated string IDs follow the same lexicographic order as their number values; that is, for any two IDs (x, y) such that x < y, x.String() < y.String(). As such, this string representation is suitable to be used as an AVL key.

func TryNext

method on ID
1func (i *ID) TryNext() (ID, bool)
source

TryNext increases i by 1 and returns its value. It returns true if successful, or false if the increment would result in an overflow.

Imports 2

Source Files 5