Expand description
§std::net::TCP stream on steroids
tcp-stream is a library aiming at providing TLS support to std::net::TcpStream
§Examples
To connect to a remote server:
use tcp_stream::{HandshakeError, TcpStream, TLSConfig};
use std::io::{self, Read, Write};
let mut stream = TcpStream::connect("www.rust-lang.org:443").unwrap();
stream.set_nonblocking(true).unwrap();
loop {
    if stream.try_connect().unwrap() {
        break;
    }
}
let mut stream = stream.into_tls("www.rust-lang.org", TLSConfig::default());
while let Err(HandshakeError::WouldBlock(mid_handshake)) = stream {
    stream = mid_handshake.handshake();
}
let mut stream = stream.unwrap();
while let Err(err) = stream.write_all(b"GET / HTTP/1.0\r\n\r\n") {
    if err.kind() != io::ErrorKind::WouldBlock {
        panic!("error: {:?}", err);
    }
}
while let Err(err) = stream.flush() {
    if err.kind() != io::ErrorKind::WouldBlock {
        panic!("error: {:?}", err);
    }
}
let mut res = vec![];
while let Err(err) = stream.read_to_end(&mut res) {
    if err.kind() != io::ErrorKind::WouldBlock {
        panic!("stream error: {:?}", err);
    }
}
println!("{}", String::from_utf8_lossy(&res));Structs§
- Native
TlsConnector  - Reexport native-tls’s 
TlsConnectorA builder for client-side TLS connections. - Native
TlsConnector Builder  - Reexport native-tls’s 
TlsConnectorBuilderA builder forTlsConnectors. - Openssl
Connector  - Reexport openssl’s 
TlsConnectorA type which wraps client-side streams in a TLS session. - Openssl
Method  - Reexport openssl’s 
TlsConnectorA type specifying the kind of protocol anSslContextwill speak. - OwnedTLS
Config  - Holds extra TLS configuration
 - Rustls
Connector  - Reexport rustls-connector’s 
TlsConnectorThe connector - Rustls
Connector Config  - Reexport rustls-connector’s 
TlsConnectorConfiguration helper forRustlsConnector - TLSConfig
 - Holds extra TLS configuration
 
Enums§
- Async
TcpStream  - Wrapper around plain or TLS async TCP streams
 - Handshake
Error  - An error returned while performing the handshake
 - Identity
 - Holds one of:
 - MidHandshake
TlsStream  - A TLS stream which has been interrupted during the handshake
 - Owned
Identity  - Holds one of:
 - TcpStream
 - Wrapper around plain or TLS TCP streams
 
Type Aliases§
- Handshake
Result  - Holds either the TLS 
TcpStreamresult or the current handshake state - Native
TlsAsync Stream  - An async 
TcpStreamwrapped by native-tls - Native
TlsHandshake Error  - A 
HandshakeErrorfrom native-tls - Native
TlsMid Handshake TlsStream  - A 
MidHandshakeTlsStreamfrom native-tls - Native
TlsStream  - A 
TcpStreamwrapped by native-tls - Openssl
Async Stream  - An async 
TcpStreamwrapped by openssl - Openssl
Error Stack  - An 
ErrorStackfrom openssl - Openssl
Handshake Error  - A 
HandshakeErrorfrom openssl - Openssl
MidHandshake TlsStream  - A 
MidHandshakeTlsStreamfrom openssl - Openssl
Stream  - A 
TcpStreamwrapped by openssl - Rustls
Async Stream  - An async 
TcpStreamwrapped by rustls - Rustls
Handshake Error  - A 
HandshakeErrorfrom rustls-connector - Rustls
MidHandshake TlsStream  - A 
MidHandshakeTlsStreamfrom rustls-connector - Rustls
Stream  - A 
TcpStreamwrapped by rustls