use std::{cell::RefCell, rc::Rc};
use alpm::{Alpm, Event, SigLevel};
fn main() {
let handle = Alpm::new("/", "tests/db").unwrap();
handle.set_log_cb((), |loglevel, msg, _data| print!("{:?} {}", loglevel, msg));
handle.set_log_cb(0, |loglevel, msg, data| {
print!("{} {:?} {}", data, loglevel, msg);
*data += 1;
});
let number = Rc::new(RefCell::new(0));
handle.set_log_cb(number.clone(), |loglevel, msg, data| {
let data: &RefCell<i32> = &*data;
let mut number = data.borrow_mut();
print!("{} {:?} {}", number, loglevel, msg);
*number += 1;
});
handle.set_event_cb((), |event, _data| match event.event() {
Event::TransactionStart => println!("transaction start"),
Event::TransactionDone => println!("transaction done"),
_ => (),
});
handle
.register_syncdb("core", SigLevel::USE_DEFAULT)
.unwrap();
handle
.register_syncdb("extra", SigLevel::USE_DEFAULT)
.unwrap();
handle
.register_syncdb("community", SigLevel::USE_DEFAULT)
.unwrap();
println!("final value of number was: {}", number.borrow())
}