Wie lese ich eine bestimmte Anzahl von Bytes aus einem Stream?

8

Ich habe eine Struktur mit einem BufStream<T> wo T: Read+Write . Das BufStream kann ein TcpStream sein und ich möchte n Bytes davon lesen. Nicht eine feste Anzahl von Bytes in einem vordefinierten Puffer, aber ich habe einen String / Stream, der die Anzahl der Bytes angibt, die als nächstes gelesen werden sollen.

Gibt es eine nette Möglichkeit, das zu tun?

    
buster 23.05.2015, 12:12
quelle

2 Antworten

4

Seit Rust 1.6 kann Read::read_exact verwendet werden mach das. Wenn bytes_to_read die Anzahl der Bytes ist, die Sie lesen müssen, möglicherweise zur Laufzeit festgelegt, und reader ist der Stream, von dem gelesen werden soll:

%Vor%

Der Teil, der mir aus der Dokumentation read_exact nicht klar war, war, dass der Zielpuffer ein dynamisch zugewiesenes Vec sein kann.

Danke an die Rust-Gitter-Community, die mich auf diese Lösung hingewiesen hat.

    
rspeer 14.09.2017 17:28
quelle
3

Es klingt, als ob Sie Read::take und Read::read_to_end :

%Vor%     
Shepmaster 23.05.2015 14:30
quelle

Tags und Links