myitcv.io: myitcv.io/immutable Index | Files | Directories

package immutable

import "myitcv.io/immutable"

Package immutable is a helper package for the immutable data structures generated by myitcv.io/immutable/cmd/immutableGen.

Index

Package Files

immutable.go

Constants

const (
    CmdImmutableGen = "immutableGen"
    CmdImmutableVet = "immutableVet"
)
const (
    // ImmTypeTmplPrefix is the prefix used to identify immutable type templates
    ImmTypeTmplPrefix = "_Imm_"

    // Pkg is the import path of this package
    PkgImportPath = "myitcv.io/immutable"
)

type Immutable Uses

type Immutable interface {
    Mutable() bool
    IsDeeplyNonMutable(seen map[interface{}]bool) bool
}

Immutable is the interface implemented by all immutable types. If Go had generics the interface would be defined, assuming a generic type parameter T, as follows:

type Immutable<T> interface {
	Mutable() bool
	AsMutable() T
	AsImmutable(T) T
	WithMutable(func(T)) T
	WithImmutable(func(T)) T
	IsDeeplyNonMutable(map[interface{}]bool) bool
}

Because we do not have such a type parameter we can only define the Mutable() method in the interface

Directories

PathSynopsis
cmd/immutableGenimmutableGen is a go generate generator that creates immutable struct, map and slice type declarations from template type declarations.
cmd/immutableVet
cmd/immutableVet/_testFiles
example
util

Package immutable is imported by 24 packages. Updated 2019-07-08. Refresh now. Tools for package owners.