aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/src/raw
diff options
context:
space:
mode:
authorTyler <[email protected]>2023-09-29 20:03:31 -0600
committerGitHub <[email protected]>2023-09-29 20:03:31 -0600
commitc52320f467c64a4944ed7df72fe7cca6a2b77564 (patch)
treecb14d9f1a3f222542db0e1e0764c23cf01b098a3 /embassy-executor/src/raw
parentf033089625b4883f9b8811f5c291292529f66767 (diff)
parent95b3d9eb3b3657de3d7bc9c04f8fb83eae901640 (diff)
Merge pull request #4 from embassy-rs/main
Pull latest from embassy main
Diffstat (limited to 'embassy-executor/src/raw')
-rw-r--r--embassy-executor/src/raw/mod.rs2
-rw-r--r--embassy-executor/src/raw/util.rs5
2 files changed, 4 insertions, 3 deletions
diff --git a/embassy-executor/src/raw/mod.rs b/embassy-executor/src/raw/mod.rs
index c1d82e18a..6d2c1c18a 100644
--- a/embassy-executor/src/raw/mod.rs
+++ b/embassy-executor/src/raw/mod.rs
@@ -203,7 +203,7 @@ impl<F: Future + 'static> AvailableTask<F> {
203 fn initialize_impl<S>(self, future: impl FnOnce() -> F) -> SpawnToken<S> { 203 fn initialize_impl<S>(self, future: impl FnOnce() -> F) -> SpawnToken<S> {
204 unsafe { 204 unsafe {
205 self.task.raw.poll_fn.set(Some(TaskStorage::<F>::poll)); 205 self.task.raw.poll_fn.set(Some(TaskStorage::<F>::poll));
206 self.task.future.write(future()); 206 self.task.future.write_in_place(future);
207 207
208 let task = TaskRef::new(self.task); 208 let task = TaskRef::new(self.task);
209 209
diff --git a/embassy-executor/src/raw/util.rs b/embassy-executor/src/raw/util.rs
index e2e8f4df8..c46085e45 100644
--- a/embassy-executor/src/raw/util.rs
+++ b/embassy-executor/src/raw/util.rs
@@ -17,8 +17,9 @@ impl<T> UninitCell<T> {
17 &mut *self.as_mut_ptr() 17 &mut *self.as_mut_ptr()
18 } 18 }
19 19
20 pub unsafe fn write(&self, val: T) { 20 #[inline(never)]
21 ptr::write(self.as_mut_ptr(), val) 21 pub unsafe fn write_in_place(&self, func: impl FnOnce() -> T) {
22 ptr::write(self.as_mut_ptr(), func())
22 } 23 }
23 24
24 pub unsafe fn drop_in_place(&self) { 25 pub unsafe fn drop_in_place(&self) {