// Copyright 2024 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package protolazy controls the lazy implementation in the protobuf runtime. // // The following logic determines whether lazy decoding is enabled: // 1. Lazy decoding is enabled by default, unless the environment variable // GOPROTODEBUG=nolazy is set. // 2. If still on, calling protolazy.Disable() turns off lazy decoding. // 3. If still on, proto.UnmarshalOptions's NoLazyDecoding turns off // lazy decoding for this Unmarshal operation only. package protolazy import ( "google.golang.org/protobuf/internal/impl" ) // Disable disables lazy unmarshaling of opaque messages. // // Messages which are still on the OPEN or HYBRID API level (see // http://go/go-opaque-proto) are never lazily unmarshalled. // // Fields must be annotated with [lazy = true] in their .proto file to become // eligible for lazy unmarshaling. func Disable() (reenable func()) { impl.EnableLazyUnmarshal(false) return func() { impl.EnableLazyUnmarshal(true) } }