Ich möchte eine generische Struktur zurückgeben. Die Idee ist, dass ich die tatsächliche Implementierung nach STDIN nach dem Standard ausgeben lassen möchte, aber zu Testzwecken möchte ich sie durch einen Vektor oder etwas anderes ersetzen, damit ich die Ausgabe einfach testen kann. Die Lösung, die ich bisher habe, ist:Zurückgeben einer generischen Struktur von neuen
#[derive(Debug)]
pub struct Sender<R, W> {
pub reader: R,
pub writer: W,
}
#[derive(Debug)]
pub struct Sender<R, W> {
pub reader: R,
pub writer: W,
}
impl<R, W> Sender<R, W> {
pub fn new<R, W>(reader: R, writer: W) -> Sender<R, W> {
Sender {
reader: R,
writer: W,
}
}
}
Die Fehler Ich erhalte:
error[E0423]: expected value, found type parameter `R`
--> src/main.rs:10:21
|
10 | reader: R,
| ^not a value
error[E0423]: expected value, found type parameter `W`
--> src/main.rs:11:21
|
11 | writer: W,
| ^not a value
error[E0601]: main function not found
error[E0194]: type parameter `R` shadows another type parameter of the same name
--> src/main.rs:8:16
|
7 | impl<R, W> Sender<R, W> {
| - first `R` declared here
8 | pub fn new<R, W>(reader: R, writer: W) -> Sender<R, W> {
| ^shadows another type parameter
error[E0194]: type parameter `W` shadows another type parameter of the same name
--> src/main.rs:8:19
|
7 | impl<R, W> Sender<R, W> {
| - first `W` declared here
8 | pub fn new<R, W>(reader: R, writer: W) -> Sender<R, W> {
| ^shadows another type parameter
Dies macht Sinn für mich, ist es nicht die konkrete Art der R
kennen. Ich dachte, die allgemeinen Parameter in der Funktion geben würde, dass, obwohl gelöst haben, aber das gibt diesen zusätzlichen Fehler:
34 | impl<R, W> Sender<R, W> {
| - first `R` declared here
35 | pub fn new<R, W>(reader: R, writer: W) -> Sender<R, W> {
| ^shadows another type parameter
Das ist nicht, weil new<R, W>
funktioniert erklärt ein verschiedene (aber gleichen Namen!) R
und W
.
Gibt es eine Möglichkeit, dies zu tun, die mich nicht erfordert, zwei verschiedene new
Funktionen zu machen, eine für Speicher lesen/schreiben und die andere für STDIN lesen/schreiben?