Documentation ¶
Overview ¶
reflectwalk is a package that allows you to "walk" complex structures similar to how you may "walk" a filesystem: visiting every element one by one and calling callback functions allowing you to handle and manipulate those elements.
this fork is derived from Mitchell Hashimoto work (see LICENSE file) https://github.com/mitchellh/reflectwalk
it is adapted to maximize performance in the context of gnark circuits and remove un-needed features.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrSkipEntry = errors.New("skip this entry")
ErrSkipEntry can be returned from walk functions to skip walking the value of this field. This is only valid in the following functions:
- Struct: skips all fields from being walked
- StructField: skips walking the struct value
Functions ¶
func Walk ¶
func Walk(data, walker interface{}) (err error)
Walk takes an arbitrary value and an interface and traverses the value, calling callbacks on the interface if they are supported. The interface should implement one or more of the walker interfaces in this package, such as PrimitiveWalker, StructWalker, etc.
Types ¶
type ArrayWalker ¶
ArrayWalker implementations are able to handle array elements found within complex structures.
type EnterExitWalker ¶
EnterExitWalker implementations are notified before and after they walk deeper into complex structures (into struct fields, into slice elements, etc.)
type InterfaceWalker ¶
InterfaceWalker implementations are able to handle interface values as they are encountered during the walk.
type PointerValueWalker ¶
PointerValueWalker implementations are notified with the value of a particular pointer when a pointer is walked. Pointer is called right before PointerEnter.
type SliceWalker ¶
SliceWalker implementations are able to handle slice elements found within complex structures.
type StructWalker ¶
type StructWalker interface { Struct(reflect.Value) error StructField(reflect.StructField, reflect.Value) error }
StructWalker is an interface that has methods that are called for structs when a Walk is done.