summaryrefslogtreecommitdiffstats
path: root/src/buildable.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-04-24 13:30:22 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-04-24 13:30:22 +0200
commit2987c24a46f3895afd85edd5f3c262776e7fa47e (patch)
treed368de1354d41579372fd12fdc87ca22f2cb54c5 /src/buildable.rs
parenta834f3c5eb10de3dbc1fb51d017cbee4483830ff (diff)
parent053a8eb004a2d44505233bf37d7e8e85a0a2f1ce (diff)
Merge branch 'vec-example'
Diffstat (limited to 'src/buildable.rs')
-rw-r--r--src/buildable.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/buildable.rs b/src/buildable.rs
index 22f6d0a..95382e7 100644
--- a/src/buildable.rs
+++ b/src/buildable.rs
@@ -1,4 +1,5 @@
use crate::ValueBuilder;
+use crate::CollectionBuilder;
use crate::Backend;
// A value that can be built interactively, using a Backend
@@ -162,3 +163,23 @@ impl BuildableValue for String {
}
}
+
+
+pub trait BuildableCollection {
+ fn builder<E, B>(backend: B) -> Box<dyn CollectionBuilder<Output = Self, Error = E>>
+ where E: Sized,
+ B: Backend<Error = E>
+ ;
+}
+
+impl<T> BuildableCollection for Vec<T>
+ where T: 'static + BuildableValue
+{
+ fn builder<E, B>(backend: B) -> Box<dyn CollectionBuilder<Output = Self, Error = E>>
+ where E: Sized,
+ B: Backend<Error = E>
+ {
+ backend.vec_builder::<T>()
+ }
+}
+