From a9b9f6e7cc7dc7ba6445a770326fccb5faa7dec1 Mon Sep 17 00:00:00 2001
From: Jerome Humbert <djeedai@gmail.com>
Date: Sat, 12 Feb 2022 13:19:14 +0000
Subject: [PATCH] Move predefined lenses to a public `lens` module

This avoids having those predefined types, which are optional, be in the
middle of the core types.
---
 examples/colormaterial_color.rs   | 2 +-
 examples/menu.rs                  | 2 +-
 examples/sequence.rs              | 2 +-
 examples/sprite_color.rs          | 2 +-
 examples/transform_rotation.rs    | 2 +-
 examples/transform_translation.rs | 2 +-
 examples/ui_position.rs           | 2 +-
 src/lens.rs                       | 2 ++
 src/lib.rs                        | 9 +++------
 src/tweenable.rs                  | 2 +-
 10 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/examples/colormaterial_color.rs b/examples/colormaterial_color.rs
index b7e850f..0f67bac 100644
--- a/examples/colormaterial_color.rs
+++ b/examples/colormaterial_color.rs
@@ -2,7 +2,7 @@ use bevy::{
     prelude::*,
     sprite::{MaterialMesh2dBundle, Mesh2dHandle},
 };
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 use std::time::Duration;
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
diff --git a/examples/menu.rs b/examples/menu.rs
index eb09eeb..f9da854 100644
--- a/examples/menu.rs
+++ b/examples/menu.rs
@@ -1,6 +1,6 @@
 use bevy::prelude::*;
 use bevy_inspector_egui::WorldInspectorPlugin;
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 use std::time::Duration;
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
diff --git a/examples/sequence.rs b/examples/sequence.rs
index d5b19cf..375b5d9 100644
--- a/examples/sequence.rs
+++ b/examples/sequence.rs
@@ -1,5 +1,5 @@
 use bevy::prelude::*;
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 use std::time::Duration;
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
diff --git a/examples/sprite_color.rs b/examples/sprite_color.rs
index 475573a..959c0f4 100644
--- a/examples/sprite_color.rs
+++ b/examples/sprite_color.rs
@@ -1,5 +1,5 @@
 use bevy::prelude::*;
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
     App::default()
diff --git a/examples/transform_rotation.rs b/examples/transform_rotation.rs
index 611535f..7bd06de 100644
--- a/examples/transform_rotation.rs
+++ b/examples/transform_rotation.rs
@@ -1,5 +1,5 @@
 use bevy::prelude::*;
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
     App::default()
diff --git a/examples/transform_translation.rs b/examples/transform_translation.rs
index 73a7ff3..6c4f9a9 100644
--- a/examples/transform_translation.rs
+++ b/examples/transform_translation.rs
@@ -1,5 +1,5 @@
 use bevy::prelude::*;
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
     App::default()
diff --git a/examples/ui_position.rs b/examples/ui_position.rs
index dd221f0..ca331c2 100644
--- a/examples/ui_position.rs
+++ b/examples/ui_position.rs
@@ -1,5 +1,5 @@
 use bevy::prelude::*;
-use bevy_tweening::*;
+use bevy_tweening::{lens::*, *};
 
 fn main() -> Result<(), Box<dyn std::error::Error>> {
     App::default()
diff --git a/src/lens.rs b/src/lens.rs
index fa6056c..d527b29 100644
--- a/src/lens.rs
+++ b/src/lens.rs
@@ -1,3 +1,5 @@
+//! Collection of predefined lenses for common Bevy components and assets.
+
 use bevy::prelude::*;
 
 /// A lens over a subset of a component.
diff --git a/src/lib.rs b/src/lib.rs
index d70531e..6466298 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -112,14 +112,11 @@ use interpolation::Ease as IEase;
 pub use interpolation::EaseFunction;
 pub use interpolation::Lerp;
 
-mod lens;
+pub mod lens;
 mod plugin;
 mod tweenable;
 
-pub use lens::{
-    ColorMaterialColorLens, Lens, SpriteColorLens, TextColorLens, TransformPositionLens,
-    TransformRotationLens, TransformScaleLens, UiPositionLens,
-};
+pub use lens::Lens;
 pub use plugin::{asset_animator_system, component_animator_system, TweeningPlugin};
 pub use tweenable::{Delay, Sequence, Tracks, Tween, Tweenable};
 
@@ -377,7 +374,7 @@ impl<T: Asset> AssetAnimator<T> {
 
 #[cfg(test)]
 mod tests {
-    use super::*;
+    use super::{lens::*, *};
 
     /// Animator::new()
     #[test]
diff --git a/src/tweenable.rs b/src/tweenable.rs
index 84a3e5a..a2e9cad 100644
--- a/src/tweenable.rs
+++ b/src/tweenable.rs
@@ -398,7 +398,7 @@ impl<T> Tweenable<T> for Delay {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use crate::{TransformPositionLens, TransformRotationLens};
+    use crate::lens::*;
     use std::sync::{Arc, Mutex};
     use std::time::Duration;
 
-- 
GitLab