repo_description: Vald.  A Highly Scalable Distributed Vector Search Engine
repo_topics: anng approximate-nearest-neighbor-search cloud cloud-native distributed-systems golang hacktoberfest high-dimensional-data high-performance image-search image-search-engine kubernetes microservices nearest-neighbor-search ngt similarity-search vald vector vector-search-engine
code: //
  // Copyright (C) 2019-2026 vdaas.org vald team <[REDACTED_EMAIL]>
  //
  // Licensed under the Apache License, Version 2.0 (the "License");
  // You may not use this file except in compliance with the License.
  // You may obtain a copy of the License at
  //
  //    https://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing, software
  // distributed under the License is distributed on an "AS IS" BASIS,
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  // See the License for the specific language governing permissions and
  // limitations under the License.
  //
  
  package compress
  
  import "github.com/vdaas/vald/internal/compress/zstd"
  
  // ZstdOption represents the functional option for zstdCompressor.
  type ZstdOption func(c *zstdCompressor) error
  
  var defaultZstdOpts = []ZstdOption{
  	WithZstdGob(),
  	WithZstdCompressionLevel(3),
  }
  
  // WithZstdGob represents the option to set the GobOption to initialize Gob.
  func WithZstdGob(opts ...GobOption) ZstdOption {
  	return func(c *zstdCompressor) error {
  		gobc, err := NewGob(opts...)
  		if err != nil {
  			return err
  		}
  		c.gobc = gobc
  		return nil
  	}
  }
  
  // WithZstdCompressionLevel represents the option to set the compress level for zstd.
  func WithZstdCompressionLevel(level int) ZstdOption {
  	return func(c *zstdCompressor) error {
  		c.eoptions = append(c.eoptions, zstd.WithEncoderLevel(level))
  		return nil
  	}
  }
  