• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

facet-rs / facet / 20059345204
58%

Build:
DEFAULT BRANCH: main
Ran 09 Dec 2025 09:59AM UTC
Jobs 1
Files 209
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Dec 2025 09:57AM UTC coverage: 58.683% (-0.4%) from 59.082%
20059345204

push

github

fasterthanlime
Refactor VTable system: Direct/Indirect styles, OxRef/OxMut, builder patterns

Major architectural refactor of the facet vtable system for better code sharing
and reduced binary bloat.

- Remove ThinPtr/WidePtr in favor of PtrConst<'a>/PtrMut<'a>/PtrUninit<'a>
- Add OxRef<'a>/OxMut<'a> - shaped pointers bundling ptr + shape
- Add Ox<'a> enum for ownership tracking (like Cow for shaped pointers)

- VTableDirect: for concrete types, uses raw *const ()/*mut (), returns T directly
- VTableIndirect: for generic containers, uses OxRef/OxMut, returns Option<T>
- VTableErased enum wraps both styles
- Shape::call_* helpers dispatch to either style transparently

- vtable_direct! macro for sized types with compile-time known traits
- VTableIndirect::builder() for generic containers with runtime dispatch
- All container vtables (Array, Option, Result, List, Map, Set) use builders
- No more positional arguments - named builder methods only

- Hash trait is generic over H: Hasher, can't store directly in vtable
- HashProxy type-erases the hasher for vtable storage
- Enables hash support without wrapper function bloat

- impls_core/impls_alloc/impls_std -> impls/core/alloc/std/crates
- New internal/ module for facet's own types (Shape, Def, etc.)
- Cleaner separation of concerns

- Copy, Send, Sync, Eq, Unpin stored as bitflags on Shape
- Set via ShapeBuilder methods: .copy(), .send(), .sync(), .eq()

- ThinPtr -> *const () or PtrConst<'a>
- WidePtr -> OxRef<'a> or OxMut<'a>
- vtable_ref! -> vtable_direct! or VTableIndirect::builder()
- ValueVTable -> VTableDirect or VTableIndirect
- Closures in vtables -> named fn items

WIP: Some impl modules still need migration to new API.

4092 of 8007 new or added lines in 112 files covered. (51.11%)

117 existing lines in 26 files now uncovered.

26173 of 44601 relevant lines covered (58.68%)

635.02 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
1
0.0
0.0% facet-bloatbench/src/main.rs
1
95.45
facet-core/src/impls/alloc/string.rs
1
93.33
facet-core/src/impls/core/nonzero.rs
1
14.0
0.0% facet-core/src/types/def/pointer.rs
1
70.44
-0.1% facet-pretty/src/printer.rs
1
29.55
0.0% facet-reflect/src/peek/ndarray.rs
1
52.4
-0.02% facet-shapelike/src/shape_like.rs
2
66.89
1.32% facet-reflect/src/partial/partial_api/fields.rs
2
77.5
0.0% facet-reflect/src/partial/partial_api/result.rs
2
69.29
0.1% facet-toml/src/serialize/mod.rs
3
62.42
0.1% facet-asn1/src/lib.rs
3
76.34
0.58% facet-reflect/src/partial/partial_api/option.rs
3
62.81
0.24% facet-toml/src/deserialize/streaming.rs
4
93.94
facet-core/src/types/shape/shape_fmt.rs
4
71.09
-1.13% facet-reflect/src/partial/partial_api/internal.rs
4
41.54
3.86% facet-reflect/src/spanned.rs
5
56.67
-0.07% facet-assert/src/same.rs
5
24.81
8.15% facet-core/src/types/characteristic.rs
5
74.19
0.85% facet-kdl/src/serialize.rs
5
0.0
0.0% facet-showcase/src/highlighter.rs
6
92.21
facet-core/src/impls/alloc/boxed.rs
6
94.03
-2.48% facet-postcard/src/deserialize.rs
6
85.37
-1.7% facet-reflect/src/peek/list_like.rs
6
74.88
0.69% facet-reflect/src/resolution.rs
7
71.8
1.67% facet-macro-parse/src/parsed.rs
7
80.85
2.61% facet-reflect/src/partial/mod.rs
8
75.0
0.54% facet-yaml/src/serialize.rs
9
38.3
facet-core/src/types/specialization.rs
9
70.27
-1.79% facet-reflect/src/peek/list.rs
10
90.83
0.13% facet-macros-impl/src/process_enum.rs
10
52.86
0.25% facet-yaml/src/deserialize.rs
12
62.56
0.01% facet-json/src/deserialize.rs
13
56.67
facet-core/src/impls/crates/ulid.rs
13
58.62
-0.75% facet-json/src/serialize.rs
14
0.0
facet-core/src/impls/crates/ordered_float.rs
14
9.52
-1.59% facet-core/src/types/ty/enum_.rs
14
67.38
0.71% facet-macros-impl/src/attr_grammar/make_parse_attr.rs
15
37.04
2.51% facet-reflect/src/partial/heap_value.rs
16
46.67
facet-core/src/impls/crates/uuid.rs
16
0.0
facet-core/src/types/ty/union_.rs
17
39.29
facet-core/src/types/variance.rs
17
68.54
0.17% facet-pretty/src/shape.rs
19
80.61
facet-core/src/types/ptr/tagged.rs
19
58.55
-1.21% facet-value/src/facet_impl.rs
21
16.0
facet-core/src/impls/core/phantom.rs
21
76.92
facet-core/src/impls/std/hashmap.rs
24
77.98
facet-core/src/impls/core/reference.rs
24
25.0
facet-core/src/types/attr.rs
25
32.43
32.43% facet-core/src/lib.rs
29
79.14
facet-core/src/impls/alloc/btreeset.rs
31
80.13
facet-core/src/impls/alloc/cow.rs
32
80.0
facet-core/src/impls/core/array.rs
33
39.87
-9.73% facet-core/src/types/ty/mod.rs
34
71.9
facet-core/src/impls/core/slice.rs
36
76.31
1.22% facet-reflect/src/partial/partial_api/misc.rs
37
40.61
-8.72% facet-core/src/types/ty/field.rs
37
69.82
-0.94% facet-reflect/src/peek/value.rs
39
90.08
-0.38% facet-macros-impl/src/process_struct.rs
40
41.38
-0.04% facet-xml/src/deserialize.rs
44
0.0
facet-core/src/impls/core/nonnull.rs
44
69.6
-0.04% facet-kdl/src/deserialize.rs
45
55.45
facet-core/src/impls/alloc/btreemap.rs
49
0.0
facet-core/src/impls/core/ops.rs
49
20.31
-29.69% facet-core/src/types/def/list.rs
51
84.59
facet-core/src/types/shape.rs
52
45.26
facet-core/src/impls/crates/time.rs
55
11.29
facet-core/src/types/error.rs
55
0.0
0.0% facet-macros-impl/src/attr_grammar/build_struct_fields.rs
56
67.82
facet-core/src/impls/crates/jiff.rs
56
70.21
facet-core/src/types/ptr/mod.rs
57
45.87
0.64% facet-xml/src/serialize.rs
65
59.12
facet-core/src/impls/core/option.rs
65
48.41
facet-core/src/impls/core/pointer.rs
65
41.96
facet-core/src/impls/core/tuple.rs
65
15.86
-12.89% facet-core/src/types/def/mod.rs
66
67.8
facet-core/src/impls/alloc/vec.rs
66
37.14
facet-core/src/impls/crates/bytes.rs
91
74.65
facet-core/src/impls/alloc/arc.rs
97
53.81
facet-core/src/impls/std/hashset.rs
99
18.27
-4.07% facet-macros-impl/src/attr_grammar/dispatch_attr.rs
107
17.69
facet-core/src/impls/core/result.rs
132
39.45
facet-core/src/impls/crates/chrono.rs
141
0.0
facet-core/src/types/shape/shape_builder.rs
161
57.07
facet-core/src/impls/alloc/rc.rs
171
32.41
facet-core/src/types/builtins.rs
215
30.87
facet-core/src/types/vtable.rs
427
0.0
xtask/src/metrics_tui_impl.rs
469
0.0
0.0% xtask/src/main.rs

Uncovered Existing Lines

Lines Coverage ∆ File
1
62.42
0.1% facet-asn1/src/lib.rs
1
0.0
0.0% facet-bloatbench/src/main.rs
1
24.81
8.15% facet-core/src/types/characteristic.rs
1
20.31
-29.69% facet-core/src/types/def/list.rs
1
58.62
-0.75% facet-json/src/serialize.rs
1
74.19
0.85% facet-kdl/src/serialize.rs
1
75.0
-0.89% facet-macros-impl/src/extension.rs
1
76.31
1.22% facet-reflect/src/partial/partial_api/misc.rs
1
41.38
-0.04% facet-xml/src/deserialize.rs
1
52.86
0.25% facet-yaml/src/deserialize.rs
2
40.61
-8.72% facet-core/src/types/ty/field.rs
2
62.56
0.01% facet-json/src/deserialize.rs
2
62.81
0.24% facet-toml/src/deserialize/streaming.rs
2
58.55
-1.21% facet-value/src/facet_impl.rs
2
0.0
0.0% xtask/src/main.rs
3
88.79
0.29% facet-postcard/src/serialize.rs
3
37.04
2.51% facet-reflect/src/partial/heap_value.rs
3
43.79
-1.96% facet-reflect/src/peek/enum_.rs
3
45.87
0.64% facet-xml/src/serialize.rs
4
67.07
-0.6% facet-msgpack/src/serialize.rs
4
94.03
-2.48% facet-postcard/src/deserialize.rs
4
80.85
2.61% facet-reflect/src/partial/mod.rs
5
0.0
0.0% facet-macros-impl/src/attr_grammar/build_struct_fields.rs
8
69.6
-0.04% facet-kdl/src/deserialize.rs
13
69.82
-0.94% facet-reflect/src/peek/value.rs
47
18.27
-4.07% facet-macros-impl/src/attr_grammar/dispatch_attr.rs
Jobs
ID Job ID Ran Files Coverage
1 20059345204.1 09 Dec 2025 09:59AM UTC 209
58.68
GitHub Action Run
Source Files on build 20059345204
  • Tree
  • List 209
  • Changed 67
  • Source Changed 0
  • Coverage Changed 67
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 45be9975 on github
  • Prev Build on main (#20040754791)
  • Next Build on main (#20067310289)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc