summaryrefslogtreecommitdiffstats
path: root/third_party/rust/rkv/src/store/keys
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/rkv/src/store/keys')
-rw-r--r--third_party/rust/rkv/src/store/keys/encodables.rs27
-rw-r--r--third_party/rust/rkv/src/store/keys/primitives.rs15
2 files changed, 42 insertions, 0 deletions
diff --git a/third_party/rust/rkv/src/store/keys/encodables.rs b/third_party/rust/rkv/src/store/keys/encodables.rs
new file mode 100644
index 0000000000..85e3eacdf5
--- /dev/null
+++ b/third_party/rust/rkv/src/store/keys/encodables.rs
@@ -0,0 +1,27 @@
+// Copyright 2018-2019 Mozilla
+//
+// 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 http://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.
+
+use bincode::serialize;
+use serde::Serialize;
+
+use crate::error::DataError;
+
+pub trait EncodableKey {
+ fn to_bytes(&self) -> Result<Vec<u8>, DataError>;
+}
+
+impl<T> EncodableKey for T
+where
+ T: Serialize,
+{
+ fn to_bytes(&self) -> Result<Vec<u8>, DataError> {
+ serialize(self).map_err(|e| e.into())
+ }
+}
diff --git a/third_party/rust/rkv/src/store/keys/primitives.rs b/third_party/rust/rkv/src/store/keys/primitives.rs
new file mode 100644
index 0000000000..26282b7cbb
--- /dev/null
+++ b/third_party/rust/rkv/src/store/keys/primitives.rs
@@ -0,0 +1,15 @@
+// Copyright 2018-2019 Mozilla
+//
+// 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 http://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.
+
+use crate::store::keys::EncodableKey;
+
+pub trait PrimitiveInt: EncodableKey {}
+
+impl PrimitiveInt for u32 {}