You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here are some notes I jotted down will perusing your code, broken down by "make it easier to use", "make it easier to develop", and "make it easier to distribute". I'll also open a couple quick PRs to address a couple of these points after I open this issue.
make it easier to develop
main branch should build with stable rust
put all nightly feature usage into a lightweight "nightly-changes" (or
whatever you want to call it) branch
create sub-crate that offers a nice public library api
consider using an existing library for command line argument parsing
this will reduce the time you spend working on your own custom argument
parsing and make it
clap to simplify your life when it
prioritize documenting your types, especially obviously important traits like DataSink and Finalizable
push docs to docr.rs (once you've written some)
push crates to crates.io
make it easier to use
commit to some kind of stable but evolveable command line api
main command line api should require few options to get good average use
case behaviors
make it easy to stray outside the lines with compression, encryption, and
network parameters
think of the difference between git porcelain and git plumbing
flags like --release, --backup, and --check could be subcommands
argument parsing should be grouped by applicability to different
subcommands/modes
subcommands make it easier to extend the main cli with additional
high-level behaviors
make it easier to distribute
look into minimizing binary size
adding the following to your Cargo.toml brings the binary size down to
~682KB:
allowing for a no_std build could significantly reduce it further (i'm not
sure though), would be worth a try
consider if std is really necessary for all use cases and offer a std feature
flag or something (you mentioned a target use case is embedded environments
which may not have standard library could be good for embedded systems, but
what about embedded systems without access to std?
The text was updated successfully, but these errors were encountered:
Here are some notes I jotted down will perusing your code, broken down by "make it easier to use", "make it easier to develop", and "make it easier to distribute". I'll also open a couple quick PRs to address a couple of these points after I open this issue.
make it easier to develop
main
branch should build with stable rustwhatever you want to call it) branch
parsing and make it
clap
to simplify your life when itDataSink
andFinalizable
make it easier to use
case behaviors
network parameters
--release
,--backup
, and--check
could be subcommandssubcommands/modes
high-level behaviors
make it easier to distribute
~682KB:
sure though), would be worth a try
flag or something (you mentioned a target use case is embedded environments
which may not have standard library could be good for embedded systems, but
what about embedded systems without access to std?
The text was updated successfully, but these errors were encountered: