pub trait SaslAuthenticator {
    // Required methods
    fn initial_response(&self) -> CBytes;
    fn evaluate_challenge(&self, challenge: CBytes) -> Result<CBytes>;
    fn handle_success(&self, data: CBytes) -> Result<()>;
}Expand description
Handles SASL authentication.
The lifecycle of an authenticator consists of:
- The 
initial_responsefunction will be called. The initial return value will be sent to the server to initiate the handshake. - The server will respond to each client response by either issuing a challenge or indicating
that the authentication is complete (successfully or not). If a new challenge is issued,
the authenticator’s 
evaluate_challengefunction will be called to produce a response that will be sent to the server. This challenge/response negotiation will continue until the server responds that authentication is successful or an error is raised. - On success, the 
handle_successwill be called with data returned by the server.