| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // package quark_val -- кварк значения
- package quark_val
- // Fix -- фиксированное значение
- type Fix struct{}
- // Mut -- изменяемое значение
- type Mut struct{}
- // CMod -- ограничитель модификации
- type CMod interface {
- Fix | Mut
- }
- // Field -- кварк поля
- type Field[M CMod, T any] struct {
- val T // Значение поля
- }
- // NewField -- возвращает новое фиксированное значение
- func NewField[T any](val T) *Field[Fix, T] {
- sf := &Field[Fix, T]{
- val: val,
- }
- return sf
- }
- // NewFieldMut -- возвращает новое мутабельное значение
- func NewFieldMut[T any](val T) *Field[Mut, T] {
- sf := &Field[Mut, T]{
- val: val,
- }
- return sf
- }
- // Получить значение поля
- func (sf *Field[M, T]) Get() T {
- return sf.val
- }
- // Set -- установить мутабельное значение
- func Set[T any](sf *Field[Mut, T], val T) {
- sf.val = val
- }
|