summaryrefslogtreecommitdiffstats
path: root/third_party/rust/uniffi-example-sprites/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/uniffi-example-sprites/src/lib.rs')
-rw-r--r--third_party/rust/uniffi-example-sprites/src/lib.rs65
1 files changed, 0 insertions, 65 deletions
diff --git a/third_party/rust/uniffi-example-sprites/src/lib.rs b/third_party/rust/uniffi-example-sprites/src/lib.rs
deleted file mode 100644
index d3cc11e408..0000000000
--- a/third_party/rust/uniffi-example-sprites/src/lib.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-use std::sync::RwLock;
-
-// A point in two-dimensional space.
-#[derive(Debug, Clone)]
-pub struct Point {
- x: f64,
- y: f64,
-}
-
-// A magnitude and direction in two-dimensional space.
-// For simplicity we represent this as a point relative to the origin.
-#[derive(Debug, Clone)]
-pub struct Vector {
- dx: f64,
- dy: f64,
-}
-
-// Move from the given Point, according to the given Vector.
-pub fn translate(p: &Point, v: Vector) -> Point {
- Point {
- x: p.x + v.dx,
- y: p.y + v.dy,
- }
-}
-
-// An entity in our imaginary world, which occupies a position in space
-// and which can move about over time.
-#[derive(Debug)]
-pub struct Sprite {
- // We must use interior mutability for managing mutable state, hence the `RwLock`.
- current_position: RwLock<Point>,
-}
-
-impl Sprite {
- fn new(initial_position: Option<Point>) -> Sprite {
- Sprite {
- current_position: RwLock::new(initial_position.unwrap_or(Point { x: 0.0, y: 0.0 })),
- }
- }
-
- fn new_relative_to(reference: Point, direction: Vector) -> Sprite {
- Sprite {
- current_position: RwLock::new(translate(&reference, direction)),
- }
- }
-
- fn get_position(&self) -> Point {
- self.current_position.read().unwrap().clone()
- }
-
- fn move_to(&self, position: Point) {
- *self.current_position.write().unwrap() = position;
- }
-
- fn move_by(&self, direction: Vector) {
- let mut current_position = self.current_position.write().unwrap();
- *current_position = translate(&current_position, direction)
- }
-}
-
-uniffi::include_scaffolding!("sprites");