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