func (ons *ONRSet) Subtract(otherSet *ONRSet) *ONRSet {
	updated := NewONRSet()
	for _, onr := range ons.onrs {
		if !otherSet.Has(onr) {
			updated.Add(onr)
		}
	}
	return updated
}
Subtract returns a subtraction from this ONR set of the other set provided.
package tuple
import (
	v0 "github.com/authzed/authzed-go/proto/authzed/api/v0"
)
type ONRSet struct {
	onrs map[string]*v0.ObjectAndRelation
}
func NewONRSet(onrs ...*v0.ObjectAndRelation) *ONRSet {
	created := &ONRSet{
		onrs: map[string]*v0.ObjectAndRelation{},
	}
	created.Update(onrs)
	return created
}
func (ons *ONRSet) Length() uint32 {
	return uint32(len(ons.onrs))
}
func (ons *ONRSet) IsEmpty() bool {
	return len(ons.onrs) == 0
}
func (ons *ONRSet) Has(onr *v0.ObjectAndRelation) bool {
	_, ok := ons.onrs[StringONR(onr)]
	return ok
}
func (ons *ONRSet) Add(onr *v0.ObjectAndRelation) bool {
	_, ok := ons.onrs[StringONR(onr)]
	if ok {
		return false
	}
	ons.onrs[StringONR(onr)] = onr
	return true
}
func (ons *ONRSet) Update(onrs []*v0.ObjectAndRelation) {
	for _, onr := range onrs {
		ons.Add(onr)
	}
}
func (ons *ONRSet) UpdateFrom(otherSet *ONRSet) {
	for _, onr := range otherSet.onrs {
		ons.Add(onr)
	}
}
func (ons *ONRSet) Intersect(otherSet *ONRSet) *ONRSet {
	updated := NewONRSet()
	for _, onr := range ons.onrs {
		if otherSet.Has(onr) {
			updated.Add(onr)
		}
	}
	return updated
}