[][src]Struct rmilter::milter_builder::MilterBuilder

pub struct MilterBuilder<'a> { /* fields omitted */ }

Used to build a Milter.

This crate tries to make it as easy as possible to use milter functionality in rust, while at the same time make it as difficult as possible to violate the milter protocol. The builder pattern is used here to provide an API that achieves these requirements.

One example of this is that the user doesn't need to implement OPTNEG messages manually and instead only defines what should be enabled by using the set_protocol method and rmilter uses this information during option negotiation with the MTA.

If the set_protocol method is not used, all functionality is enabled by default during option negotiation.

Example

use rmilter::milter_builder::MilterBuilder;
use rmilter::message_handler::MessageHandler;

struct MyHandler;
impl MessageHandler for MyHandler {}

let mut handler = MyHandler {};

let mut milter = MilterBuilder::new(&mut handler)
    .build();

Implementations

impl<'a> MilterBuilder<'a>[src]

pub fn build(self) -> Milter<'a>[src]

Creates a Milter from the MilterBuilder configuration.

Example

use rmilter::milter_builder::MilterBuilder;
use rmilter::message_handler::MessageHandler;

struct MyHandler;
impl MessageHandler for MyHandler {}

let mut handler = MyHandler {};

let mut milter = MilterBuilder::new(&mut handler)
    .build();

pub fn new(message_handler: &'a mut impl MessageHandler) -> Self[src]

Creates a new MilterBuilder with a given MessageHandler.

The MessageHandler is passed as a mutable borrow to allow the user of the milter to store and use state inside the MessageHandler.

Example

use rmilter::milter_builder::MilterBuilder;
use rmilter::message_handler::MessageHandler;

struct MyHandler;
impl MessageHandler for MyHandler {}

let mut handler = MyHandler {};

let mut milter = MilterBuilder::new(&mut handler)
    .build();

pub fn set_protocol(self, protocol: MilterProtocol) -> Self[src]

Used to define the protocol for communicating with the MTA.

Example

use rmilter::milter_builder::MilterBuilder;
use rmilter::message_handler::MessageHandler;
use rmilter::milter_message::MilterProtocol;

struct MyHandler;
impl MessageHandler for MyHandler {}

let mut handler = MyHandler {};
let protocol = MilterProtocol::default();

let mut milter = MilterBuilder::new(&mut handler)
    .set_protocol(protocol)
    .build();

Auto Trait Implementations

impl<'a> !RefUnwindSafe for MilterBuilder<'a>

impl<'a> !Send for MilterBuilder<'a>

impl<'a> !Sync for MilterBuilder<'a>

impl<'a> Unpin for MilterBuilder<'a>

impl<'a> !UnwindSafe for MilterBuilder<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.