0.18 primitive: FrameSource/FrameSink trait split (deprecate Stream)
Splits the bidirectional pes::Stream into one-direction traits so calling read() on a write-only sink is a compile error instead of runtime E9001. Keeps Stream alive as deprecated through 0.18 with a blanket FrameSource impl so existing concrete types compile unchanged. FrameSink can't be blanket-impl'd from Stream (different finish signature), so concrete impls migrate per-type in a follow-up. Concrete `impl pes::Stream for X` blocks in mux/* and the existing tests gain a one-line `#[allow(deprecated)]` to keep `-D warnings` clean during the deprecation window — no behavior changes. See (internal)/memory/0_18_redesign.md. Single contributor: MattJackson.
This commit is contained in:
@@ -70,6 +70,7 @@ impl NetworkStream {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(deprecated)] // 0.18 trait split: migrate to FrameSource/FrameSink in follow-up commit.
|
||||
impl crate::pes::Stream for NetworkStream {
|
||||
fn read(&mut self) -> io::Result<Option<crate::pes::PesFrame>> {
|
||||
match &mut self.mode {
|
||||
@@ -157,6 +158,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
#[ignore] // Requires TCP; may be flaky in CI environments
|
||||
#[allow(deprecated)] // 0.18 trait split: migrate to FrameSource/FrameSink in follow-up commit.
|
||||
fn network_pes_roundtrip() {
|
||||
use crate::pes;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user