rust-windowing / rust-windowing/softbuffer
Allow using X11 / Wayland on platforms that have another standard backend (macOS, Android)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 506
- Forks
- 85
- PR merge metrics
- No merged PRs in 30d
Description
Partially related to #44 I am trying to compile some rust application targeting termux (x11) and am getting the below errors. I have tried both compiling within termux, as well as on my desktop
command: cargo build --target x86_64-linux-android
Error log
error[E0392]: parameter `D` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:33:20
|
33 | pub struct Context<D> {
| ^ unused parameter
|
= help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `D` to be a const parameter, use `const D: usize` instead
error[E0392]: parameter `D` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:74:20
|
74 | pub struct Surface<D, W> {
| ^ unused parameter
|
= help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `D` to be a const parameter, use `const D: usize` instead
error[E0392]: parameter `W` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:74:23
|
74 | pub struct Surface<D, W> {
| ^ unused parameter
|
= help: consider removing `W`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `W` to be a const parameter, use `const W: usize` instead
error[E0392]: parameter `'a` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:197:19
|
197 | pub struct Buffer<'a, D, W> {
| ^^ unused parameter
|
= help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`
error[E0392]: parameter `D` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:197:23
|
197 | pub struct Buffer<'a, D, W> {
| ^ unused parameter
|
= help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `D` to be a const parameter, use `const D: usize` instead
error[E0392]: parameter `W` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:197:26
|
197 | pub struct Buffer<'a, D, W> {
| ^ unused parameter
|
= help: consider removing `W`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `W` to be a const parameter, use `const W: usize` instead
error[E0392]: parameter `D` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_dispatch.rs:180:6
|
180 | <D, W> =>
| ^ unused parameter
|
= help: consider removing `D`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `D` to be a const parameter, use `const D: usize` instead
error[E0392]: parameter `W` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_dispatch.rs:180:9
|
180 | <D, W> =>
| ^ unused parameter
|
= help: consider removing `W`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `W` to be a const parameter, use `const W: usize` instead
error[E0392]: parameter `'a` is never used
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_dispatch.rs:119:40
|
119 | pub(crate) enum BufferDispatch<'a, $dgen, $wgen> {
| ^^ unused parameter
...
179 | / make_dispatch! {
180 | | <D, W> =>
181 | | #[cfg(x11_platform)]
182 | | X11(Rc<backends::x11::X11DisplayImpl<D>>, backends::x11::X11Impl<D, W>, backends::x11::BufferImpl<'a, D, W>),
... |
194 | | Orbital(D, backends::orbital::OrbitalImpl<D, W>, backends::orbital::BufferImpl<'a, D, W>),
195 | | }
| |_- in this macro invocation
|
= help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`
= note: this error originates in the macro `make_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0283]: type annotations needed
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:83:15
|
83 | match SurfaceDispatch::new(window, &context.context_impl) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for type parameter `D` declared on the trait `SurfaceInterface`
|
= note: cannot satisfy `_: HasDisplayHandle`
= help: the following types implement trait `HasDisplayHandle`:
NoDisplayHandle
Box<H>
DisplayHandle<'a>
Rc<H>
Arc<H>
&H
&mut H
note: required by a bound in `backend_interface::SurfaceInterface::new`
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/backend_interface.rs:15:38
|
15 | pub(crate) trait SurfaceInterface<D: HasDisplayHandle + ?Sized, W: HasWindowHandle + ?Sized> {
| ^^^^^^^^^^^^^^^^ required by this bound in `SurfaceInterface::new`
...
21 | fn new(window: W, context: &Self::Context) -> Result<Self, InitError<W>>
| --- required by a bound in this associated function
error[E0282]: type annotations needed
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:137:12
|
137 | Ok(Buffer {
| ____________^
138 | | buffer_impl: self.surface_impl.buffer_mut()?,
139 | | _marker: PhantomData,
140 | | })
| |_________^ cannot infer type of the type parameter `D` declared on the struct `Buffer`
|
help: consider specifying the generic arguments
|
137 | Ok(Buffer::<D, W> {
| ++++++++
error[E0283]: type annotations needed
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:147:14
|
147 | self.window()
| ^^^^^^ cannot infer type for type parameter `D`
|
= note: cannot satisfy `_: HasDisplayHandle`
= help: the following types implement trait `HasDisplayHandle`:
NoDisplayHandle
Box<H>
DisplayHandle<'a>
Rc<H>
Arc<H>
&H
&mut H
note: required by a bound in `Surface::<D, W>::window`
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:80:9
|
80 | impl<D: HasDisplayHandle, W: HasWindowHandle> Surface<D, W> {
| ^^^^^^^^^^^^^^^^ required by this bound in `Surface::<D, W>::window`
...
101 | pub fn window(&self) -> &W {
| ------ required by a bound in this associated function
error[E0282]: type annotations needed
--> /home/quack/.cargo/registry/src/index.crates.io-6f17d22bba15001f/softbuffer-0.4.2/src/lib.rs:156:23
|
156 | self.window().window_handle()
| ^^^^^^^^^^^^^ cannot infer type for type parameter `W`
Some errors have detailed explanations: E0282, E0283, E0392.
For more information about an error, try `rustc --explain E0282`.
error: could not compile `softbuffer` (lib) due to 13 previous errors
warning: build failed, waiting for other jobs to finish...
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the reported cargo build --target x86_64-linux-android failure, then inspect src/lib.rs, src/backend_dispatch.rs, and src/backend_interface.rs, especially the generic backend dispatch and handle bounds. Determine how X11 or Wayland should be selected on platforms with another standard backend. Done means the relevant target builds without the reported generic-parameter and type-inference errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, linux, macos, rust
- Domain
- computer-graphics, operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100