ldap3 0.5.1

Pure-Rust LDAPv3 Client
Documentation
extern crate ldap3;
#[macro_use]
extern crate maplit;

use std::error::Error;

use ldap3::{LdapConn, Mod};
use ldap3::controls::{MakeCritical, RelaxRules};

fn main() {
    match do_modify() {
        Ok(_) => (),
        Err(e) => println!("{:?}", e),
    }
}

fn do_modify() -> Result<(), Box<Error>> {
    let ldap = LdapConn::new("ldap://localhost:2389")?;
    ldap.simple_bind("cn=Manager,dc=example,dc=org", "secret")?.success()?;
    let res = ldap
        .with_controls(vec![RelaxRules.critical().into()])
        .modify(
            "uid=inejge,ou=People,dc=example,dc=org",
            vec![
                Mod::Delete("objectClass", hashset!{"account"}),
                Mod::Add("objectClass", hashset!{"inetOrgPerson"}),
                Mod::Add("sn", hashset!{"Nejgebauer"}),
                Mod::Add("cn", hashset!{"Ivan Nejgebauer"}),
            ]
        )?.success()?;
    println!("{:?}", res);
    Ok(())
}