## easy_traits

### Instructions

Your task is to implement the trait `AppendStr` for the type `StringValue`.

The trait `AppendStr` has the following functions:

- `append_str`: that appends to the string to the `value`.
- `append_number`: that appends the number to the `value`.
- `remove_punctuation_marks`: that removes punctuation from the `value` (`.`, `,`, `?` and `!`).


### Expected Function

```rust
#[derive(Clone)]
struct StringValue {
    value: String,
}

trait AppendStr {
    fn append_str(self, new_str: String) -> Self;

    fn append_number(self, new_number: f64) -> Self;

    fn remove_punctuation_marks(self) -> Self;
}

impl AppendStr for StringValue {
}
```

### Usage

Here is a program to test your function.

```rust
use easy_traits::*;

fn main() {
    let mut str_aux = StringValue {
        value: String::from("hello"),
    };

    println!("Before append: {}", str_aux.value);

    str_aux.append_str(String::from(" there!"));
    println!("After append: {}", str_aux.value);

    str_aux.remove_punctuation_marks();
    println!("After removing punctuation: {}", str_aux.value);
}
```

And its output

```console
$ cargo run
Before append: hello
After append: hello there!
After removing punctuation: hello there
$
```
