tracker-rs 0.1.0

Rust bindings for tracker
use glib::object::IsA;
use glib::translate::*;
use crate::SparqlConnection;

/* The following function is not implemented in crate::auto because of the error message below.

pub trait SparqlConnectionExtManual: 'static {
    update_array_async<P: IsA<gio::Cancellable>, Q: FnOnce(Result<(), glib::Error>) + Send + 'static>(&self, sparql: &str, cancellable: Option<&P>, callback: Q);
}

impl<O: IsA<SparqlConnection>> SparqlConnectionExtManual for O {
        #[doc(alias = "tracker_sparql_connection_update_array_async")]
    pub fn update_array_async<P: IsA<gio::Cancellable>, Q: FnOnce(Result<(), glib::Error>) + Send + 'static>(&self, sparql: &str, cancellable: Option<&P>, callback: Q) {
        let sparql_length = sparql.len() as i32;
        let user_data: Box_<Q> = Box_::new(callback);
        unsafe extern "C" fn update_array_async_trampoline<Q: FnOnce(Result<(), glib::Error>) + Send + 'static>(_source_object: *mut glib::gobject_ffi::GObject, res: *mut gio::ffi::GAsyncResult, user_data: glib::ffi::gpointer) {
            let mut error = ptr::null_mut();
            let _ = ffi::tracker_sparql_connection_update_array_finish(_source_object as *mut _, res, &mut error);
            let result = if error.is_null() { Ok(()) } else { Err(from_glib_full(error)) };
            let callback: Box_<Q> = Box_::from_raw(user_data as *mut _);
            callback(result);
        }
        let callback = update_array_async_trampoline::<Q>;
        unsafe {
            ffi::tracker_sparql_connection_update_array_async(self.to_glib_none().0, sparql.to_glib_none().0, sparql_length, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box_::into_raw(user_data) as *mut _);
        }
    }


error[E0277]: the trait bound `str: glib::translate::ToGlibPtr<'_, *mut *mut i8>` is not satisfied
   --> src/auto/sparql_connection.rs:182:93
    |
182 | ..._none().0, sparql.to_glib_none().0, sparql_length, cancellable.map(|p| p.as_ref()).to_glib_none().0, Some(callback), Box_::into_raw(us...
    |                      ^^^^^^^^^^^^ the trait `glib::translate::ToGlibPtr<'_, *mut *mut i8>` is not implemented for `str`
    |
    = help: the following implementations were found:
              <str as glib::translate::ToGlibPtr<'a, *const i8>>
              <str as glib::translate::ToGlibPtr<'a, *mut i8>>

*/