ellipse
This commit is contained in:
parent
f451c601b8
commit
118b465c4b
2 changed files with 70 additions and 0 deletions
8
15-method/Cargo.toml
Normal file
8
15-method/Cargo.toml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[package]
|
||||||
|
name = "method"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
62
15-method/src/main.rs
Normal file
62
15-method/src/main.rs
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
const PI:f64 = 3.14;
|
||||||
|
|
||||||
|
// we added derivation for debugging.
|
||||||
|
// this trait's going to help us for printing in this code
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Ellipse
|
||||||
|
{
|
||||||
|
x_radius: f64,
|
||||||
|
y_radius: f64,
|
||||||
|
}
|
||||||
|
|
||||||
|
// this implementation helps us to collect related things together
|
||||||
|
// in this example all things under this will be related to Ellipse struct
|
||||||
|
// methods gets "self" as a first paramether, this is different from functions
|
||||||
|
// functions like "circle" no need to get self as a parameter
|
||||||
|
// we call them related function, they can be used as a constructor
|
||||||
|
impl Ellipse
|
||||||
|
{
|
||||||
|
fn area(&self) -> f64
|
||||||
|
{
|
||||||
|
self.x_radius*self.y_radius*PI
|
||||||
|
}
|
||||||
|
fn x_radius(&self) -> f64
|
||||||
|
{
|
||||||
|
self.x_radius
|
||||||
|
}
|
||||||
|
fn y_radius(&self) -> f64
|
||||||
|
{
|
||||||
|
self.y_radius
|
||||||
|
}
|
||||||
|
fn can_fit(&self, second:&Ellipse) -> bool
|
||||||
|
{
|
||||||
|
self.x_radius >= second.x_radius && self.y_radius >= second.y_radius
|
||||||
|
}
|
||||||
|
fn circle(size:f64) -> Self
|
||||||
|
{
|
||||||
|
Self { x_radius: (size), y_radius: (size) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main()
|
||||||
|
{
|
||||||
|
println!("Hello, world!");
|
||||||
|
|
||||||
|
let ellipse1 = Ellipse
|
||||||
|
{
|
||||||
|
x_radius : 2.0,
|
||||||
|
y_radius : 3.0,
|
||||||
|
};
|
||||||
|
let ellipse2 = Ellipse
|
||||||
|
{
|
||||||
|
x_radius : 1.0,
|
||||||
|
y_radius : 2.0,
|
||||||
|
};
|
||||||
|
let circle = Ellipse::circle(5.0);
|
||||||
|
println!("Ellipse is {:#?}", ellipse1);
|
||||||
|
println!("Area of the ellipse is {}", ellipse1.area());
|
||||||
|
println!("X = {}", ellipse1.x_radius());
|
||||||
|
println!("Y = {}", ellipse1.y_radius());
|
||||||
|
println!("Is first be able to hug second: {}", ellipse1.can_fit(&ellipse2));
|
||||||
|
println!("Are of new circle = {}", circle.area());
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue