large size difference between variants

Open
#121 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Refactor
Clarity
Clearly specified
Activity status
Stale
Tech stack
rust
Domain
networking

Research direction

Start in sable_network/src/network/update.rs at the HistoricMessageSource and HistoricMessageTarget definitions, then run Clippy to reproduce the two large_enum_variant warnings. Inspect the affected enum usages before applying the suggested boxing approach; done means the warnings no longer appear and the project still builds.

Written by the indexing model from the issue text.

Description

Clippy points out these issues:

warning: large size difference between variants
  --> sable_network/src/network/update.rs:34:1
   |
34 | / pub enum HistoricMessageSource {
35 | |     Server(state::Server),
   | |     --------------------- the second-largest variant contains at least 128 bytes
36 | |     User(HistoricUser),
   | |     ------------------ the largest variant contains at least 656 bytes
37 | |     Unknown,
38 | | }
   | |_^ the entire enum is at least 656 bytes
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
   = note: `#[warn(clippy::large_enum_variant)]` on by default
help: consider boxing the large fields to reduce the total size of the enum
   |
36 |     User(Box<HistoricUser>),
   |          ~~~~~~~~~~~~~~~~~

warning: large size difference between variants
  --> sable_network/src/network/update.rs:54:1
   |
54 | / pub enum HistoricMessageTarget {
55 | |     User(HistoricUser),
   | |     ------------------ the largest variant contains at least 656 bytes
56 | |     Channel(state::Channel),
   | |     ----------------------- the second-largest variant contains at least 176 bytes
57 | |     Unknown,
58 | | }
   | |_^ the entire enum is at least 656 bytes
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant
help: consider boxing the large fields to reduce the total size of the enum
   |
55 |     User(Box<HistoricUser>),
   |          ~~~~~~~~~~~~~~~~~

warning: `sable_network` (lib) generated 2 warnings

Should we do something about them?

Dominant language
Rust
Stars
132
Forks
14
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Libera-Chat/sable

All issues in Libera-Chat/sable

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.