You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.2 KiB

## easy_traits
### Instructions
Your task is to implement the trait `AppendStr` for the type `StringValue`.
3 years ago
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
3 years ago
#[derive(Clone)]
struct StringValue {
value: String,
}
3 years ago
trait AppendStr {
fn append_str(self, new_str: String) -> Self;
3 years ago
fn append_number(self, new_number: f64) -> Self;
3 years ago
fn remove_punctuation_marks(self) -> Self;
}
impl AppendStr for StringValue {
}
```
### Usage
Here is a program to test your function.
```rust
3 years ago
use easy_traits::*;
fn main() {
3 years ago
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);
3 years ago
str_aux.remove_punctuation_marks();
println!("After removing punctuation: {}", str_aux.value);
}
```
And its output
```console
$ cargo run
3 years ago
Before append: hello
After append: hello there!
After removing punctuation: hello there
$
```