changeset 624:d4fa806e7f6c

Move FS support behind a feature
author NumberFour8 <lukas.pohanka@inina.net>
date Fri, 01 Sep 2023 10:43:00 +0200
parents dbf8977e966a
children 90a85d60e34f
files Cargo.toml src/error.rs src/lib.rs src/options.rs
diffstat 4 files changed, 30 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/Cargo.toml	Thu Aug 31 08:01:36 2023 +0200
+++ b/Cargo.toml	Fri Sep 01 10:43:00 2023 +0200
@@ -12,19 +12,24 @@
 edition = "2018"
 include = ["src/**/*", "src/*", "Cargo.toml", "LICENSE", "README.md"]
 
+[lib]
+crate-type = ["cdylib", "rlib"]
+
 [dependencies]
 crc = "1.8"
 integer-encoding = "3.0"
 rand = "0.7"
 snap = "1.0"
-errno = "0.2"
-fs2 = "0.4.3"
+
+errno = { optional = true, version = "0.2" }
+fs2 = {optional = true, version = "0.4.3"}
 
 tokio = { optional = true, features = ["rt", "sync"], version = ">= 1.21" }
 
 [features]
-default = []
+default = ["fs"]
 async = ["tokio"]
+fs = ["errno", "fs2"]
 
 [dev-dependencies]
 time-test = "0.2"
--- a/src/error.rs	Thu Aug 31 08:01:36 2023 +0200
+++ b/src/error.rs	Fri Sep 01 10:43:00 2023 +0200
@@ -5,7 +5,9 @@
 use std::result;
 use std::sync;
 
+#[cfg(feature = "fs")]
 use errno;
+
 use snap;
 
 /// StatusCode describes various failure modes of database operations.
@@ -26,6 +28,7 @@
     PermissionDenied,
     AsyncError,
     Unknown,
+    #[cfg(feature = "fs")]
     Errno(errno::Errno),
 }
 
--- a/src/lib.rs	Thu Aug 31 08:01:36 2023 +0200
+++ b/src/lib.rs	Fri Sep 01 10:43:00 2023 +0200
@@ -24,8 +24,13 @@
 #![allow(dead_code)]
 
 extern crate crc;
+
+#[cfg(feature = "fs")]
 extern crate errno;
+
+#[cfg(feature = "fs")]
 extern crate fs2;
+
 extern crate integer_encoding;
 extern crate rand;
 extern crate snap;
@@ -45,7 +50,10 @@
 mod blockhandle;
 mod cache;
 mod cmp;
+
+#[cfg(feature = "fs")]
 mod disk_env;
+
 mod env;
 mod env_common;
 mod error;
@@ -82,7 +90,10 @@
 pub use compressor::{Compressor, CompressorId};
 pub use db_impl::DB;
 pub use db_iter::DBIterator;
+
+#[cfg(feature = "fs")]
 pub use disk_env::PosixDiskEnv;
+
 pub use env::Env;
 pub use error::{Result, Status, StatusCode};
 pub use filter::{BloomPolicy, FilterPolicy};
--- a/src/options.rs	Thu Aug 31 08:01:36 2023 +0200
+++ b/src/options.rs	Fri Sep 01 10:43:00 2023 +0200
@@ -6,7 +6,7 @@
 use crate::infolog::{self, Logger};
 use crate::mem_env::MemEnv;
 use crate::types::{share, Shared};
-use crate::{disk_env, Result};
+use crate::Result;
 use crate::{filter, Status, StatusCode};
 
 use std::default::Default;
@@ -48,11 +48,17 @@
     pub filter_policy: filter::BoxedFilterPolicy,
 }
 
+#[cfg(feature = "fs")]
+type CurrentEnv = crate::disk_env::PosixDiskEnv;
+
+#[cfg(not(feature = "fs"))]
+type CurrentEnv = crate::mem_env::MemEnv;
+
 impl Default for Options {
     fn default() -> Options {
         Options {
             cmp: Rc::new(Box::new(DefaultCmp)),
-            env: Rc::new(Box::new(disk_env::PosixDiskEnv::new())),
+            env: Rc::new(Box::new(CurrentEnv::new())),
             log: None,
             create_if_missing: true,
             error_if_exists: false,