summaryrefslogtreecommitdiff
path: root/vendor/writeable/src/either.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-10 13:11:11 -0600
committermo khan <mo@mokhan.ca>2025-07-10 13:11:11 -0600
commit01959b16a21b22b5df5f16569c2a8e8f92beecef (patch)
tree32afa5d747c5466345c59ec52161a7cba3d6d755 /vendor/writeable/src/either.rs
parentff30574117a996df332e23d1fb6f65259b316b5b (diff)
chore: vendor dependencies
Diffstat (limited to 'vendor/writeable/src/either.rs')
-rw-r--r--vendor/writeable/src/either.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/vendor/writeable/src/either.rs b/vendor/writeable/src/either.rs
new file mode 100644
index 00000000..67be94f5
--- /dev/null
+++ b/vendor/writeable/src/either.rs
@@ -0,0 +1,41 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::*;
+use ::either::Either;
+
+/// A [`Writeable`] impl that delegates to one type or another type.
+impl<W0, W1> Writeable for Either<W0, W1>
+where
+ W0: Writeable,
+ W1: Writeable,
+{
+ fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+ match self {
+ Either::Left(w) => w.write_to(sink),
+ Either::Right(w) => w.write_to(sink),
+ }
+ }
+
+ fn write_to_parts<S: PartsWrite + ?Sized>(&self, sink: &mut S) -> fmt::Result {
+ match self {
+ Either::Left(w) => w.write_to_parts(sink),
+ Either::Right(w) => w.write_to_parts(sink),
+ }
+ }
+
+ fn writeable_length_hint(&self) -> LengthHint {
+ match self {
+ Either::Left(w) => w.writeable_length_hint(),
+ Either::Right(w) => w.writeable_length_hint(),
+ }
+ }
+
+ fn write_to_string(&self) -> Cow<str> {
+ match self {
+ Either::Left(w) => w.write_to_string(),
+ Either::Right(w) => w.write_to_string(),
+ }
+ }
+}