Mercurial > lbo > hg > leveldb-rs
view examples/mcpe/src/main.rs @ 612:40d8c816e363
Format the code
author | kaiyohugo <41114603+KAIYOHUGO@users.noreply.github.com> |
---|---|
date | Sat, 15 Jul 2023 14:26:31 +0800 |
parents | ca88834b15c2 |
children | 3cfa3633c012 |
line wrap: on
line source
use miniz_oxide::deflate::{compress_to_vec, compress_to_vec_zlib}; use miniz_oxide::inflate::{decompress_to_vec, decompress_to_vec_zlib}; use rusty_leveldb::{Compressor, CompressorList, Options}; use std::rc::Rc; struct ZlibCompressor(u8); impl ZlibCompressor { /// level 0-10 pub fn new(level: u8) -> Self { assert!(level <= 10); Self(level) } } impl Compressor for ZlibCompressor { fn encode(&self, block: Vec<u8>) -> rusty_leveldb::Result<Vec<u8>> { Ok(compress_to_vec_zlib(&block, self.0)) } fn decode(&self, block: Vec<u8>) -> rusty_leveldb::Result<Vec<u8>> { decompress_to_vec_zlib(&block).map_err(|e| rusty_leveldb::Status { code: rusty_leveldb::StatusCode::CompressionError, err: e.to_string(), }) } } struct RawZlibCompressor(u8); impl RawZlibCompressor { /// level 0-10 pub fn new(level: u8) -> Self { assert!(level <= 10); Self(level) } } impl Compressor for RawZlibCompressor { fn encode(&self, block: Vec<u8>) -> rusty_leveldb::Result<Vec<u8>> { Ok(compress_to_vec(&block, self.0)) } fn decode(&self, block: Vec<u8>) -> rusty_leveldb::Result<Vec<u8>> { decompress_to_vec(&block).map_err(|e| rusty_leveldb::Status { code: rusty_leveldb::StatusCode::CompressionError, err: e.to_string(), }) } } pub fn mcpe_options(compression_level: u8) -> Options { let mut opt = Options::default(); opt.compressor = 0; let mut list = CompressorList::new(); list.set_with_id(0, RawZlibCompressor::new(compression_level)); list.set_with_id(1, ZlibCompressor::new(compression_level)); opt.compressor_list = Rc::new(list); opt } fn main() { // let path = "path here"; // let compression_level = 10; // let opt = mcpe_options(compression_level); // DB::open(path, opt) // Do something }