| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // 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
- }
|