#1321
feat(storage): validate engine-device compatibility statically
Summary
- preserve concrete device types through
DeviceBuilderand validate engine-device pairs before type erasure - add the extensible
DeviceFormarker trait, a centralizedBlockEnginecompatibility list, and targeted compiler diagnostics - expose concrete device and partition types needed by downstream implementations
- move runtime device selection in
foyer-benchafter static engine-config construction - add compile-pass and compile-fail coverage for built-in pairs and downstream extension paths
- keep compile-time UI tests isolated from the madsim runtime feature set
- align the local
cargo xlicense step with CI's HawkEye configuration
API compatibility
DeviceBuildernow declares an associatedDevicetype and returnsArc<Self::Device>BlockEngineConfig::newrequires the concrete device type to implementDeviceFor<Self>- callers that erase a device to
Arc<dyn Device>before engine construction must delay erasure or erase the completedEngineConfiginstead
Testing
cargo x --fastRUSTFLAGS='--cfg tokio_unstable --cfg madsim' cargo nextest run --workspace --exclude foyer-bench --exclude examples --no-default-features --features 'runtime-madsim-tokio'
Activity
3This pull request is a draft
Merging is unavailable until it is marked ready for review.
Codecov Report
:x: Patch coverage is
88.23529%with4 linesin your changes missing coverage. Please review.74.09% <ø> (ø)93.56% <100.00%> (+0.02%)96.66% <ø> (ø)53.12% <ø> (ø)71.42% <100.00%> (ø)62.50% <100.00%> (-0.36%)91.75% <100.00%> (-0.09%)100.00% <ø> (ø)35.59% <100.00%> (ø)0.00% <0.00%> (ø)... and 2 files with indirect coverage changes
:rocket: New features to boost your workflow: