literal: make Map and List generic, to avoid requiring conversions
This commit is contained in:
@@ -31,7 +31,7 @@ func Null() ipld.Node {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Map creates an IPLD node from a map[string]any
|
// Map creates an IPLD node from a map[string]any
|
||||||
func Map(m map[string]any) (ipld.Node, error) {
|
func Map[T any](m map[string]T) (ipld.Node, error) {
|
||||||
return qp.BuildMap(basicnode.Prototype.Any, int64(len(m)), func(ma datamodel.MapAssembler) {
|
return qp.BuildMap(basicnode.Prototype.Any, int64(len(m)), func(ma datamodel.MapAssembler) {
|
||||||
for k, v := range m {
|
for k, v := range m {
|
||||||
qp.MapEntry(ma, k, anyAssemble(v))
|
qp.MapEntry(ma, k, anyAssemble(v))
|
||||||
@@ -39,6 +39,15 @@ func Map(m map[string]any) (ipld.Node, error) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// List creates an IPLD node from a []any
|
||||||
|
func List[T any](l []T) (ipld.Node, error) {
|
||||||
|
return qp.BuildList(basicnode.Prototype.Any, int64(len(l)), func(la datamodel.ListAssembler) {
|
||||||
|
for _, val := range l {
|
||||||
|
qp.ListEntry(la, anyAssemble(val))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func anyAssemble(val any) qp.Assemble {
|
func anyAssemble(val any) qp.Assemble {
|
||||||
var rt reflect.Type
|
var rt reflect.Type
|
||||||
var rv reflect.Value
|
var rv reflect.Value
|
||||||
|
|||||||
Reference in New Issue
Block a user