Привет, возможно вопрос звучит дико тупо, но не могу реализовать такую простую вещь как вызов двух методов у объекта.
Есть простая структура с двумя методами:
pub struct MimeType {
pub extension: String,
pub charset: String,
}
impl MimeType {
pub fn new(extension: String, charset: String) -> MimeType {
return MimeType {
extension,
charset,
};
}
pub fn extension(self) -> String {
return self.extension;
}
pub fn charset(self) -> String {
return self.charset;
}
}
Пытаюсь написать тесты к ним:
#[cfg(test)]
mod test {
use super::*;
#[test]
fn is() {
let m = MimeType::new(
"test".to_owned(),
"UTF-8".to_owned()
);
assert_eq!("UTF-8", m.charset());
assert_eq!("UTF-8", m.extension());
}
}
Но получаю в ответ:
error[E0382]: use of moved value: `m`
--> src\mime\mod.rs:35:29
|
29 | let m = MimeType::new(
| - move occurs because `m` has type `mime::MimeType`, which does not implement the `Copy` trait
...
34 | assert_eq!("UTF-8", m.charset());
| --------- `m` moved due to this method call
35 | assert_eq!("UTF-8", m.extension());
| ^ value used here after move
|
note: this function consumes the receiver `self` by taking ownership of it, which moves `m`
--> src\mime\mod.rs:18:20
|
18 | pub fn charset(self) -> String {
| ^^^^
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.
error: aborting due to previous error
For more information about this error, try `rustc --explain E0382`.
error: could not compile `r-mime`
To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
Пробовал и
implement the `Copy` trait (не факт, что правильно сделал), появлялись только другие ошибки связанные с этм же...
Что и как надо, толкните плиз :)
З.Ы. только учу раст.