Closed lopopolo closed 2 years ago
$ cargo tree
...
├── radix_trie v0.2.1
│ ├── endian-type v0.1.2
│ └── nibble_vec v0.1.0
│ └── smallvec v1.8.0
├── smallvec v1.8.0
😅 I am hoping to follow up with additional PRs that make the radix_trie
dependency optional as well.
😅 I am hoping to follow up with additional PRs that make the
radix_trie
dependency optional as well.
I've followed up on this here: https://github.com/kkawakam/rustyline/pull/615
This PR explores removing the dependency on
smallvec
and replacing it withVec
fromstd
.smallvec
is a third party dependency that leaks into the public API. If applications that depend onrustyline
wish to create custom key bindings, they must also depend onsmallvec
to constructEvent::KeySeq
.This PR replaces
smallvec
, which is a complicated data structure with lots of unsafe code and several known security advisories, with a vocabulary type fromstd
.This has the effect of reducing the size of the
Event
enum.Because
Event
is a public enum, changing the type of the field inEvent::KeySeq
is a breaking change. I've shown this change in the sequence of commits in this branch and the addition of a test.Motivation of this PR is reducing dependencies.
@gwenn if you'd prefer, I'd be willing to try an alternate PR that conditionally enables
smallvec
with a Cargo feature. I think it looks easy enough to support.