pub trait ConnectionDataProvider {
// Required methods
fn tls_version(&self) -> Option<ProtocolVersion>;
fn is_tls(&self) -> bool;
fn socket_providers(&self) -> BitFlags<DataKinds>;
fn provide_sockets(&self, dk: DataKinds) -> Option<SocketData<'_>>;
// Provided method
fn provide_preferred_socket(
&self,
prefs: &DataKindPreference,
) -> Option<SocketData<'_>> { ... }
}