mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2025-12-28 16:48:30 -05:00
Bumps [github.com/olekukonko/tablewriter](https://github.com/olekukonko/tablewriter) from 1.1.0 to 1.1.1. - [Commits](https://github.com/olekukonko/tablewriter/compare/v1.1.0...v1.1.1) --- updated-dependencies: - dependency-name: github.com/olekukonko/tablewriter dependency-version: 1.1.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2.0 KiB
2.0 KiB
stringish
A small Go module that provides a generic type constraint for “string-like” data, and a utf8 package that works with both strings and byte slices without conversions.
type Interface interface {
~[]byte | ~string
}
Install
go get github.com/clipperhouse/stringish
Examples
import (
"github.com/clipperhouse/stringish"
"github.com/clipperhouse/stringish/utf8"
)
s := "Hello, 世界"
r, size := utf8.DecodeRune(s) // not DecodeRuneInString 🎉
b := []byte("Hello, 世界")
r, size = utf8.DecodeRune(b) // same API!
func MyFoo[T stringish.Interface](s T) T {
// pass a string or a []byte
// iterate, slice, transform, whatever
}
Motivation
Sometimes we want APIs to accept string or []byte without having to convert
between those types. That conversion usually allocates!
By implementing with stringish.Interface, we can have a single API, and
single implementation for both types: one Foo instead of Foo and
FooString.
We have converted the
unicode/utf8 package
as an example -- note the absence of*InString funcs. We might look at x/text
next.
Used by
-
clipperhouse/uax29: stringish trie, stringish iterator, stringish SplitFunc