aboutsummaryrefslogtreecommitdiff
path: root/crates/stdx
diff options
context:
space:
mode:
Diffstat (limited to 'crates/stdx')
-rw-r--r--crates/stdx/src/lib.rs7
-rw-r--r--crates/stdx/src/process.rs16
2 files changed, 21 insertions, 2 deletions
diff --git a/crates/stdx/src/lib.rs b/crates/stdx/src/lib.rs
index 18d5fadb9..2963484fa 100644
--- a/crates/stdx/src/lib.rs
+++ b/crates/stdx/src/lib.rs
@@ -110,7 +110,7 @@ pub fn defer<F: FnOnce()>(f: F) -> impl Drop {
110 D(Some(f)) 110 D(Some(f))
111} 111}
112 112
113#[repr(transparent)] 113#[cfg_attr(not(target_arch = "wasm32"), repr(transparent))]
114pub struct JodChild(pub std::process::Child); 114pub struct JodChild(pub std::process::Child);
115 115
116impl ops::Deref for JodChild { 116impl ops::Deref for JodChild {
@@ -135,7 +135,10 @@ impl Drop for JodChild {
135 135
136impl JodChild { 136impl JodChild {
137 pub fn into_inner(self) -> std::process::Child { 137 pub fn into_inner(self) -> std::process::Child {
138 // SAFETY: repr transparent 138 if cfg!(target_arch = "wasm32") {
139 panic!("no processes on wasm");
140 }
141 // SAFETY: repr transparent, except on WASM
139 unsafe { std::mem::transmute::<JodChild, std::process::Child>(self) } 142 unsafe { std::mem::transmute::<JodChild, std::process::Child>(self) }
140 } 143 }
141} 144}
diff --git a/crates/stdx/src/process.rs b/crates/stdx/src/process.rs
index 692a2ab3d..b290ba2f0 100644
--- a/crates/stdx/src/process.rs
+++ b/crates/stdx/src/process.rs
@@ -236,3 +236,19 @@ mod imp {
236 slice::from_raw_parts_mut(v.as_mut_ptr().add(v.len()), v.capacity() - v.len()) 236 slice::from_raw_parts_mut(v.as_mut_ptr().add(v.len()), v.capacity() - v.len())
237 } 237 }
238} 238}
239
240#[cfg(target_arch = "wasm32")]
241mod imp {
242 use std::{
243 io,
244 process::{ChildStderr, ChildStdout},
245 };
246
247 pub(crate) fn read2(
248 _out_pipe: ChildStdout,
249 _err_pipe: ChildStderr,
250 _data: &mut dyn FnMut(bool, &mut Vec<u8>, bool),
251 ) -> io::Result<()> {
252 panic!("no processes on wasm")
253 }
254}