#[derive(Debug)]
pub structRectangle{
length: u32,
width: u32,}
impl Rectangle {
pub fn can_hold(&self, other:&Rectangle)-> bool {
self.length > other.length && self.width > other.width
}}
pub fn add_two(a: i32)-> i32 {
a +2}
pub fn greeting(name:&str)-> String {
String::from("Hello")}
pub structGuess{
value: u32,}
impl Guess {
pub fn new(value: u32)-> Guess {if value <1{
panic!("Guess value must be less than or equal to 100, got {}.", value);}elseif value >100{
panic!("Guess value must be greater than or equal to 1, got {}", value);}
Guess {
value
}}}
fn prints_and_result_10(a: i32)-> i32 {
println!("I got the value {}", a);10}
pub fn add_two_2(a: i32)-> i32 {internal_adder(a,2)}
fn internal_adder(a: i32, b: i32)-> i32 {
a + b
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn exploration(){
assert_eq!(2+2,4);}
#[test]
fn another(){
panic!("Make this test fail");}
#[test]
fn larger_can_hold_smaller(){
let larger = Rectangle { length:8, width:7};
let smaller = Rectangle { length:5, width:1};
assert!(larger.can_hold(&smaller));
assert!(!smaller.can_hold(&larger));}
#[test]
fn it_adds_two(){
assert_eq!(4,add_two(2));}
#[test]
fn greeting_contains_name(){
let result =greeting("Carol");
assert!(
result.contains("Carol"),"Greeting did not contain name, value was '{}'", result
);}
#[test]
#[should_panic(expected="Guess value must be less than or equal to 100")]
fn greater_than_100(){
Guess::new(200);}
#[test]
fn it_work()-> Result<(), String>{if2+2==4{Ok(())}else{Err(String::from("two plus two does not equal four"))}}
#[test]
fn this_test_will_pass(){
let value =prints_and_result_10(4);
assert_eq!(10, value);}
#[test]
#[ignore]
fn this_test_will_fail(){
let value =prints_and_result_10(8);
assert_eq!(5, value);}
#[test]
fn internal(){
assert_eq!(4,internal_adder(2,2));}}