Streaming json deserialiser of a child process and see the exit code?

Hi, I'm streaming deserialising some json with serde_json, which takes in a reader:

Deserializer::from_reader(child.stdout.unwrap())

As you can see I am handing it the stdout of a child process.

But now my child process is partially consumed so I can't wait() for it to exit and find out what the exit code is. This seems a pretty common problem so I figured I'd post it here so the answers help others as well as me.

Is there a way I can have my streaming deserialised cake and eat it? (I.e. can I mutably lend the stdout to a steraming json deserialiser somehow? (or is there some level at which I can clone or wrap in an Rc?)

References:
https://docs.serde.rs/serde_json/struct.StreamDeserializer.html
https://doc.rust-lang.org/std/process/struct.Child.html

I would try taking the stdout handle with Option::take, leaving the process struct in tact, just with the stdout field set to None.

Perfect. I was assuming that taking the stream out of the struct would in some way hurt the child process object but it seems fine with that moved out.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.