paupino/rust-decimal - Open Source PR Review Scorecard

Decimal number implementation written in pure Rust suitable for financial and fixed-precision calculations.

C-Rank Grade: A (Welcoming) - 69/100

External PR Merge Rate: 78%

Response Time: -

First Timer Success: 50%

Frequently Asked Questions

Is paupino/rust-decimal welcoming to first-time open-source contributors?

paupino/rust-decimal has a recorded first-timer success rate of 50.0%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in paupino/rust-decimal respond to incoming external pull requests in approximately 0.0 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 68.7 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 68.7 places paupino/rust-decimal in the A tier.

What is the external contributor pull request merge rate for paupino/rust-decimal?

The external contributor pull request merge rate for paupino/rust-decimal is 77.8%, based on public PR activity from non-core contributors.

Are there Good First Issues available in paupino/rust-decimal?

paupino/rust-decimal currently has 19 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

paupino
paupino/rust-decimalA•Welcoming1.3k
GitHub
Back to Explorer
paupino

paupino/rust-decimal

1,342
InactiveA•Welcoming(69/100)Rust

Decimal number implementation written in pure Rust suitable for financial and fixed-precision calculations.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Strict Architecture Gatekeeper

Warmth Score
6.7/10
Patience Score
7.6/10
Nitpick Rate
40%

Strict review standards in paupino/rust-decimal. Ensure PR scope matches issue requirements closely before requesting review.

Top PR Submission Do's

  • •Ensure code complies with the project coding style
  • •Keep PRs scoped to a single concern
  • •Include context and link to the related issue

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit PRs without linking an issue
  • •Do not break existing tests without fixing them
  • •Do not mix unrelated refactors in a single PR
Response Velocity
-
No reviewer activity recorded

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
77.8%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
50.0%
Accepts new contributor PRs

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
8 core
Highly collaborative maintainer core
Diagnostic Health HUD
77.8%
Merge Gauge
50.0%
1st-Timer
Community Vibe46/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for paupino/rust-decimal
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/paupino/rust-decimal)](https://getmerged.abhishekco.de/paupino/rust-decimal?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

The diesel MySQL FromSql<Numeric, Mysql> impl in src/mysql.rs always reads the value as UTF-8 text: let s = std::str::from_utf8(numeric.as_bytes())?; Decimal::from_str(s) diesel keeps the server's native binary type for Numeric when the column or expression is an integer or float type, for example SUM(double_col), COUNT(*) or SELECT 1. Then: a LongLong 42 fails with "A character could not represent a Decimal instance" a Double 1.5 fails with "invalid utf-8" a Long 825307441 (bytes b"1111") silently returns 1111 diesel's own BigDecimal impl branches on value.value_type(); doing the same here would fix it.

📅 Opened Sep 24, 2026💬 0 comments
Quality: 50/100Contribute

float_option::serialize and arbitrary_precision_option::serialize write the inner value directly for Some, without calling serialize_some. Self-describing formats like JSON don't notice, but others lose the value: #[derive(Serialize, Deserialize)] struct Opt { #[serde(with = "rust_decimal::serde::float_option")] value: Option<Decimal>, } let bytes = bincode::serialize(&Opt { value: Some(dec!(1.5)) }).unwrap(); bincode::deserialize::<Opt>(&bytes); // Ok(Opt { value: None }) RON reports "Expected option" instead. str_option already calls serialize_some. Separately, with the serde-str feature also enabled, float_option can't read a JSON number: {"value": 1.5} fails with "invalid type: floating point 1.5". OptionDecimalVisitor::visit_some delegates to Decimal::deserialize, which becomes deserialize_str under serde-str. Because Cargo unifies features, any dependency enabling serde-str breaks this. Calling deserialize_any(DecimalVisitor) there would fix it.

📅 Opened Sep 24, 2026💬 0 comments
Quality: 50/100Contribute

Decode double-rounds values with more than 28 significant digits. The fractional digit groups are added one at a time with checked_add, which rounds at every step: // 99999999999999999999.0000000050000001::numeric (dscale 16), wire bytes as hex let bytes = hex_decode("0009000400000010270f270f270f270f270f0000000013880001"); Decimal::from_sql(&Type::NUMERIC, &bytes); // Ok(99999999999999999999.00000000), expected …00000001 About 0.1% of random canonical inputs are off by one unit in the last place. Accumulating an exact mantissa and rounding once would fix it. Zero loses its scale on encode. Decimal::from_str("0.00") is encoded with dscale 0, so it reads back as 0. PostgreSQL itself keeps dscale for zero. The encoder in src/postgres/common.rs hard-codes scale: 0 for zero; this affects both the postgres-types and diesel paths.

📅 Opened Sep 24, 2026💬 0 comments
Quality: 50/100Contribute

Against a reference suite computed with Python's decimal at 250 digits (the exact result correctly rounded to the representation a Decimal would use), the worst errors on master, in units in the last place, are: Function Worst error sqrt 3 ln 31 log10 30 exp 88 powu 1,203 powd (fractional exponent) 61,576 tan about 8 significant digits sin, cos, tan above 2π no meaningful accuracy The trig functions reduce large arguments with the 28-digit Decimal::TWO_PI, so the error grows with the argument. For example sin(1e20) has no correct digits, and between 1e3 and 1e15 only about 14 digits are correct. ln is off by 19 ulps for ln(1e-28) alone because of the 28-digit LN10 constant. exp accumulates the error in the 28-digit Decimal::E through repeated squaring. Related: #690 (powd).

📅 Opened Sep 24, 2026💬 0 comments
Quality: 50/100Contribute

(-Decimal::ZERO).sqrt(); // None, expected Some(0) (-Decimal::ZERO).ln(); // panics: "Unable to calculate ln for negative numbers", rather than the zero message Negative zero comes out of ordinary operations such as trunc, ceil and multiplication, so this can be hit without constructing -0 directly. sqrt checks is_sign_negative() before is_zero(), and the panic branches of ln and log10 do the same. Checking is_zero() first would fix it.

📅 Opened Sep 24, 2026💬 1 comment
Quality: 50/100Contribute
Looking for more Rust beginner tasks?Explore Rust GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for paupino/rust-decimal

When evaluating whether to contribute to paupino/rust-decimal, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of paupino/rust-decimal acknowledge new external contributions in approximately -. Out of all submitted pull requests from non-core authors in the last 180-day window, 77.8% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to paupino/rust-decimal

01

Is paupino/rust-decimal welcoming to first-time open-source contributors?

paupino/rust-decimal has a recorded first-timer success rate of 50.0%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~-. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 68.7 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 68.7 places paupino/rust-decimal in the Welcoming tier.

04

What is the external contributor pull request merge rate for paupino/rust-decimal?

The external pull request merge rate is 77.8%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in paupino/rust-decimal?

Yes, paupino/rust-decimal currently has 19 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for paupino/rust-decimal are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.