mirror of
https://github.com/lukaszraczylo/filepuff-mcp.git
synced 2026-06-05 22:23:50 +00:00
66 lines
1.1 KiB
Rust
66 lines
1.1 KiB
Rust
/// A simple point in 2D space.
|
|
struct Point {
|
|
x: f64,
|
|
y: f64,
|
|
}
|
|
|
|
/// Represents different shapes.
|
|
enum Shape {
|
|
Circle(f64),
|
|
Rectangle(f64, f64),
|
|
Triangle(f64, f64, f64),
|
|
}
|
|
|
|
/// A trait for objects that can be drawn.
|
|
trait Drawable {
|
|
fn draw(&self);
|
|
fn area(&self) -> f64;
|
|
}
|
|
|
|
impl Drawable for Shape {
|
|
fn draw(&self) {
|
|
println!("Drawing shape");
|
|
}
|
|
|
|
fn area(&self) -> f64 {
|
|
0.0
|
|
}
|
|
}
|
|
|
|
impl Point {
|
|
/// Creates a new point.
|
|
fn new(x: f64, y: f64) -> Self {
|
|
Point { x, y }
|
|
}
|
|
|
|
fn distance(&self, other: &Point) -> f64 {
|
|
((self.x - other.x).powi(2) + (self.y - other.y).powi(2)).sqrt()
|
|
}
|
|
}
|
|
|
|
/// A type alias for a list of points.
|
|
type PointList = Vec<Point>;
|
|
|
|
/// The maximum number of points allowed.
|
|
const MAX_POINTS: usize = 1000;
|
|
|
|
static ORIGIN: Point = Point { x: 0.0, y: 0.0 };
|
|
|
|
/// A helper macro for creating points.
|
|
macro_rules! point {
|
|
($x:expr, $y:expr) => {
|
|
Point::new($x, $y)
|
|
};
|
|
}
|
|
|
|
mod geometry {
|
|
pub fn hello() {
|
|
println!("Hello from geometry");
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let p = point!(1.0, 2.0);
|
|
println!("Point: ({}, {})", p.x, p.y);
|
|
}
|