diff options
author | Chris Wendt <chrismwendt@gmail.com> | 2022-06-08 03:25:55 -0600 |
---|---|---|
committer | Chris Wendt <chrismwendt@gmail.com> | 2022-06-08 03:25:55 -0600 |
commit | 0efa4167cc4a8f7f294bf7eaba5a2d88df4b09b7 (patch) | |
tree | 43f56a7cbf79f813fd97859d84b77d51b449d348 /var-value.go | |
parent | eliminate some type assertions (diff) | |
download | stm-0efa4167cc4a8f7f294bf7eaba5a2d88df4b09b7.tar.gz stm-0efa4167cc4a8f7f294bf7eaba5a2d88df4b09b7.tar.xz |
generic versionedValue[T]
Diffstat (limited to 'var-value.go')
-rw-r--r-- | var-value.go | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/var-value.go b/var-value.go index 966399a..f4921f3 100644 --- a/var-value.go +++ b/var-value.go @@ -8,24 +8,24 @@ type VarValue interface { type version uint64 -type versionedValue struct { - value interface{} +type versionedValue[T any] struct { + value T version version } -func (me versionedValue) Set(newValue interface{}) VarValue { - return versionedValue{ - value: newValue, +func (me versionedValue[T]) Set(newValue interface{}) VarValue { + return versionedValue[T]{ + value: newValue.(T), version: me.version + 1, } } -func (me versionedValue) Get() interface{} { +func (me versionedValue[T]) Get() interface{} { return me.value } -func (me versionedValue) Changed(other VarValue) bool { - return me.version != other.(versionedValue).version +func (me versionedValue[T]) Changed(other VarValue) bool { + return me.version != other.(versionedValue[T]).version } type customVarValue[T any] struct { |