gtk-rs / gtk-rs-core

Rust bindings for GNOME libraries
https://gtk-rs.org/gtk-rs-core
MIT License
279 stars 110 forks source link

implement `FromGlibPtrNone` for shared types #1152

Open bilelmoussaoui opened 1 year ago

bilelmoussaoui commented 1 year ago

Required by webkit6 bindings

error[E0277]: the trait bound `Event: glib::translate::FromGlibPtrNone<*mut GdkEvent>` is not satisfied
    --> webkit-web-process-extension6/src/auto/context_menu.rs:52:18
     |
52   |         unsafe { from_glib_none(ffi::webkit_context_menu_get_event(self.to_glib_none(...
     |                  ^^^^^^^^^^^^^^ the trait `glib::translate::FromGlibPtrNone<*mut GdkEvent>` is not implemented for `Event`
     |
     = help: the following other types implement trait `glib::translate::FromGlibPtrNone<P>`:
               <&glib::GStr as glib::translate::FromGlibPtrNone<*const i8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*const u8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*mut i8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*mut u8>>
               <Exception as glib::translate::FromGlibPtrNone<*const JSCException>>
               <Exception as glib::translate::FromGlibPtrNone<*mut JSCException>>
               <HitTestResult as glib::translate::FromGlibPtrNone<*const WebKitHitTestResult>>
               <HitTestResult as glib::translate::FromGlibPtrNone<*mut WebKitHitTestResult>>
             and 482 others
     = note: required for `std::option::Option<Event>` to implement `glib::translate::FromGlibPtrNone<*mut GdkEvent>`
note: required by a bound in `glib::translate::from_glib_none`
    --> /home/bilalelmoussaoui/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/4447e9a/glib/src/translate.rs:1621:41
     |
1621 | pub unsafe fn from_glib_none<P: Ptr, T: FromGlibPtrNone<P>>(ptr: P) -> T {
     |                                         ^^^^^^^^^^^^^^^^^^ required by this bound in `from_glib_none`

error[E0277]: the trait bound `MessageHeaders: glib::translate::FromGlibPtrNone<*mut SoupMessageHeaders>` is not satisfied
    --> webkit-web-process-extension6/src/auto/uri_request.rs:33:13
     |
33   |             from_glib_none(ffi::webkit_uri_request_get_http_headers(
     |             ^^^^^^^^^^^^^^ the trait `glib::translate::FromGlibPtrNone<*mut SoupMessageHeaders>` is not implemented for `MessageHeaders`
     |
     = help: the following other types implement trait `glib::translate::FromGlibPtrNone<P>`:
               <&glib::GStr as glib::translate::FromGlibPtrNone<*const i8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*const u8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*mut i8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*mut u8>>
               <Exception as glib::translate::FromGlibPtrNone<*const JSCException>>
               <Exception as glib::translate::FromGlibPtrNone<*mut JSCException>>
               <HitTestResult as glib::translate::FromGlibPtrNone<*const WebKitHitTestResult>>
               <HitTestResult as glib::translate::FromGlibPtrNone<*mut WebKitHitTestResult>>
             and 482 others
     = note: required for `std::option::Option<MessageHeaders>` to implement `glib::translate::FromGlibPtrNone<*mut SoupMessageHeaders>`
note: required by a bound in `glib::translate::from_glib_none`
    --> /home/bilalelmoussaoui/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/4447e9a/glib/src/translate.rs:1621:41
     |
1621 | pub unsafe fn from_glib_none<P: Ptr, T: FromGlibPtrNone<P>>(ptr: P) -> T {
     |                                         ^^^^^^^^^^^^^^^^^^ required by this bound in `from_glib_none`

error[E0277]: the trait bound `MessageHeaders: glib::translate::FromGlibPtrNone<*mut SoupMessageHeaders>` is not satisfied
    --> webkit-web-process-extension6/src/auto/uri_response.rs:33:13
     |
33   |             from_glib_none(ffi::webkit_uri_response_get_http_headers(
     |             ^^^^^^^^^^^^^^ the trait `glib::translate::FromGlibPtrNone<*mut SoupMessageHeaders>` is not implemented for `MessageHeaders`
     |
     = help: the following other types implement trait `glib::translate::FromGlibPtrNone<P>`:
               <&glib::GStr as glib::translate::FromGlibPtrNone<*const i8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*const u8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*mut i8>>
               <&glib::GStr as glib::translate::FromGlibPtrNone<*mut u8>>
               <Exception as glib::translate::FromGlibPtrNone<*const JSCException>>
               <Exception as glib::translate::FromGlibPtrNone<*mut JSCException>>
               <HitTestResult as glib::translate::FromGlibPtrNone<*const WebKitHitTestResult>>
               <HitTestResult as glib::translate::FromGlibPtrNone<*mut WebKitHitTestResult>>
             and 482 others
     = note: required for `std::option::Option<MessageHeaders>` to implement `glib::translate::FromGlibPtrNone<*mut SoupMessageHeaders>`
note: required by a bound in `glib::translate::from_glib_none`
    --> /home/bilalelmoussaoui/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/4447e9a/glib/src/translate.rs:1621:41
     |
1621 | pub unsafe fn from_glib_none<P: Ptr, T: FromGlibPtrNone<P>>(ptr: P) -> T {
     |                                         ^^^^^^^^^^^^^^^^^^ required by this bound in `from_glib_none`

For more information about this error, try `rustc --explain E0277`.
bilelmoussaoui commented 1 year ago

Actually, this is probably something that needs to be done gtk-rs-core as it also fails for soup3-rs's MessageHeaders. Both seems to be fundamental types.

sdroege commented 1 year ago

It is implemented for shared types https://github.com/gtk-rs/gtk-rs-core/blob/04bddc004bb165fbfce92249357ab2a6dadcbf21/glib/src/shared.rs#L178-L196

Nothing would work otherwise :)