keyboard-types icon indicating copy to clipboard operation
keyboard-types copied to clipboard

Make this crate `no_std`

Open notgull opened this issue 3 years ago • 3 comments

This crate currently relies on libstd; however, I'd like to use this in a no_std program. Looking through the source code, it looks like the only std-exclusive import this uses (without additional features) is Error. If we made this optional, this crate could be used in no_std environments. This would be a breaking change.

In addition, it may also be a good idea to also eliminate the dependency on liballoc. Right now String is used in Key, but it may be replaced by an &'a str in order to allow usage on platforms without allocators and eliminate a potential allocation from the crate.

I will implement this PR if the behavior is desired.

notgull avatar Oct 29 '22 19:10 notgull

If we made this optional, this crate could be used in no_std environments.

This crate is primarily used by servo and high-level GUI tool-kits. Both depend on the standard library. What is your use-case for this crate in a no_std environment?

In addition, it may also be a good idea to also eliminate the dependency on liballoc. Right now String is used in Key, but it may be replaced by an &'a str in order to allow usage on platforms without allocators and eliminate a potential allocation from the crate.

Wouldn't make that the crate more complicated to use in general? I'm not convinced that the allocation has a measurable performance impact.

pyfisch avatar Oct 30 '22 09:10 pyfisch

What is your use-case for this crate in a no_std environment?

I'm creating an experimental lightweight no_std toolkit, where the library is welded directly to winuser or libxcb without the standard library being involved.

notgull avatar Oct 30 '22 14:10 notgull

What is your use-case for this crate in a no_std environment?

I'm creating an experimental lightweight no_std toolkit, where the library is welded directly to winuser or libxcb without the standard library being involved.

Ok. I personally don't think that GUI applications gain much from avoiding the standard library. When your toolkit reaches the point where its used in applications I will reevaluate if keyboard-types should support operation without std. Then I might merge your patch.

pyfisch avatar Oct 30 '22 21:10 pyfisch