starter-rust-crate

Starter Rust crate

https://github.com/sixarm/starter-rust-crate

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary

Scientific Fields

Agricultural and Biological Sciences Life Sciences - 40% confidence
Last synced: 4 months ago · JSON representation ·

Repository

Starter Rust crate

Basic Info
  • Host: GitHub
  • Owner: SixArm
  • Language: Rust
  • Default Branch: main
  • Size: 14.6 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed 9 months ago
Metadata Files
Readme Citation

README.md

Starter Rust crate for creating applications

Starter provides our opinionated ways for creating Rust command line applications.

Try it

Install:

sh cargo install starter

Run:

sh starter --test --verbose

Get the source code:

sh git clone https://github.com/sixarm/starter-rust-crate.git

Goals

Goals include:

  • Demonstrate how to combine crates for command line argument parsing, configuration, logging, errors, etc.

  • Describe project conventions that help an application team with growth as well as long-term maintenance.

  • Provide a starting point for our new projects.

Anti-goals

Anti-goals include:

  • Code everything from scratch. Instead, we want to use existing crates that are well-maintained and have a large community.

  • Code freeze. Instead, this crate is a work in progress, and will evolve as we learn.

  • Compatibility with no_std, or old Rust versions, or less-supported platforms. Instead, we want to use std, and recent Rust versions, and fully-supported platforms.

Features

Features include:

  • Run a command line argument parser, by using the crate clap.

  • Load a configuration file, by using the crate confy.

  • Create custom errors, by using the crate thiserror.

  • Log messages such as trace and debug, by using the crate thiserror.

  • Log messages to configuration places, by using the crate env_logger.

  • Use assert macros for testing and production, by using the crate assertables

Project structure

The project structure aims for clean separation of concerns of generic application capabilities.

  • src - Source code.
    • app - Application generic code.
    • args - Arguments structure; this may be set via clap.
    • clap - Command line argument parser i.e. clap.
    • config - Configuration structure; this may be set via confy.
    • confy - Configuration loader from a TOML file.
    • mod - Module file that includes all the modules.
    • paths - Path helpers, such as for directories and files.
    • run - Run function that handles everything; called by main or lib.
  • cspell.json - CSpell is a spell checker for code.

Cargo.toml

Dependencies:

  • assertables - Assert macros for testing and runtime in production.
  • confy - Configuration management.
  • clap - Command Line Argument Parser.
  • env_logger - A logger that can be configured via environment variables.
  • indoc - Indented document literals.
  • map The map macro for creating map collections.
  • log - Lightweight logging facade.
  • serde - Serialize/deserialize framework. Used by confy.
  • thiserror - Error derive macro for the standard library std::error::Error trait.

Owner

  • Name: SixArm
  • Login: SixArm
  • Kind: organization
  • Email: sixarm@sixarm.com
  • Location: San Francisco

SixArm Software

Citation (CITATION.cff)

cff-version: 1.2.0
title: Starter Rust crate for creating applications
message: >-
  If you use this work and you want to cite it,
  then you can use the metadata from this file.
type: software
authors:
  - given-names: Joel Parker
    family-names: Henderson
    email: joel@joelparkerhenderson.com
    affiliation: joelparkerhenderson.com
    orcid: 'https://orcid.org/0009-0000-4681-282X'
identifiers:
  - type: url
    value: 'https://github.com/SixArm/starter-rust-crate/'
    description: Starter Rust crate for creating applications
repository-code: 'https://github.com/SixArm/starter-rust-crate/'
abstract: >-
  Starter Rust crate for creating applications
license: See license file

GitHub Events

Total
  • Push event: 2
  • Create event: 2
Last Year
  • Push event: 2
  • Create event: 2

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 4
  • Total Committers: 1
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 4
  • Committers: 1
  • Avg Commits per committer: 4.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Joel Parker Henderson j****l@j****m 4
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

Cargo.lock cargo
  • aho-corasick 1.1.3
  • anstream 0.6.18
  • anstyle 1.0.10
  • anstyle-parse 0.2.6
  • anstyle-query 1.1.2
  • anstyle-wincon 3.0.6
  • assertables 9.3.0
  • atty 0.2.14
  • bitflags 2.6.0
  • cfg-if 1.0.0
  • clap 4.5.21
  • clap_builder 4.5.21
  • clap_lex 0.7.3
  • colorchoice 1.0.3
  • confy 0.6.1
  • directories 5.0.1
  • dirs-sys 0.4.1
  • env_logger 0.9.3
  • equivalent 1.0.1
  • errno 0.3.9
  • getrandom 0.2.15
  • hashbrown 0.15.1
  • hermit-abi 0.1.19
  • humantime 2.1.0
  • indexmap 2.6.0
  • indoc 2.0.5
  • is_terminal_polyfill 1.70.1
  • libc 0.2.162
  • libredox 0.1.3
  • linux-raw-sys 0.4.14
  • log 0.4.22
  • map 1.3.0
  • memchr 2.7.4
  • option-ext 0.2.0
  • proc-macro2 1.0.89
  • quote 1.0.37
  • redox_users 0.4.6
  • regex 1.11.1
  • regex-automata 0.4.9
  • regex-syntax 0.8.5
  • rustix 0.38.40
  • serde 1.0.215
  • serde_derive 1.0.215
  • serde_spanned 0.6.8
  • strsim 0.11.1
  • syn 2.0.87
  • termcolor 1.4.1
  • terminal_size 0.4.0
  • thiserror 1.0.69
  • thiserror-impl 1.0.69
  • toml 0.8.19
  • toml_datetime 0.6.8
  • toml_edit 0.22.22
  • unicode-ident 1.0.13
  • utf8parse 0.2.2
  • wasi 0.11.0+wasi-snapshot-preview1
  • winapi 0.3.9
  • winapi-i686-pc-windows-gnu 0.4.0
  • winapi-util 0.1.9
  • winapi-x86_64-pc-windows-gnu 0.4.0
  • windows-sys 0.48.0
  • windows-sys 0.52.0
  • windows-sys 0.59.0
  • windows-targets 0.48.5
  • windows-targets 0.52.6
  • windows_aarch64_gnullvm 0.48.5
  • windows_aarch64_gnullvm 0.52.6
  • windows_aarch64_msvc 0.48.5
  • windows_aarch64_msvc 0.52.6
  • windows_i686_gnu 0.48.5
  • windows_i686_gnu 0.52.6
  • windows_i686_gnullvm 0.52.6
  • windows_i686_msvc 0.48.5
  • windows_i686_msvc 0.52.6
  • windows_x86_64_gnu 0.48.5
  • windows_x86_64_gnu 0.52.6
  • windows_x86_64_gnullvm 0.48.5
  • windows_x86_64_gnullvm 0.52.6
  • windows_x86_64_msvc 0.48.5
  • windows_x86_64_msvc 0.52.6
  • winnow 0.6.20
Cargo.toml cargo