about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Einwag <matthias.einwag@live.com>2019-02-05 01:30:00 -0800
committerMatthias Einwag <matthias.einwag@live.com>2019-02-05 01:30:00 -0800
commit363e992b9885e2ce55b389ab274f9cd88598104d (patch)
tree9c1480c1208d098fe29b97fea8fe15cf2dc581e5
parente1ec81459da4ba8e0633d90ddf440522a1587f35 (diff)
review suggestions
-rw-r--r--src/libcore/future/future.rs6
-rw-r--r--src/libcore/task/wake.rs5
2 files changed, 9 insertions, 2 deletions
diff --git a/src/libcore/future/future.rs b/src/libcore/future/future.rs
index 470143d797a..459e8a927e7 100644
--- a/src/libcore/future/future.rs
+++ b/src/libcore/future/future.rs
@@ -68,13 +68,15 @@ pub trait Future {
     /// typically do *not* suffer the same problems of "all wakeups must poll
     /// all events"; they are more like `epoll(4)`.
     ///
-    /// An implementation of `poll` should strive to return quickly, and must
-    /// *never* block. Returning quickly prevents unnecessarily clogging up
+    /// An implementation of `poll` should strive to return quickly, and should
+    /// not block. Returning quickly prevents unnecessarily clogging up
     /// threads or event loops. If it is known ahead of time that a call to
     /// `poll` may end up taking awhile, the work should be offloaded to a
     /// thread pool (or something similar) to ensure that `poll` can return
     /// quickly.
     ///
+    /// An implementation of `poll` may also never cause memory unsafety.
+    ///
     /// # Panics
     ///
     /// Once a future has completed (returned `Ready` from `poll`),
diff --git a/src/libcore/task/wake.rs b/src/libcore/task/wake.rs
index 1f42d3e2690..a877e033bc6 100644
--- a/src/libcore/task/wake.rs
+++ b/src/libcore/task/wake.rs
@@ -29,6 +29,11 @@ pub struct RawWaker {
 ///
 /// The pointer passed to all functions inside the vtable is the `data` pointer
 /// from the enclosing [`RawWaker`] object.
+///
+/// The functions inside this struct are only intended be called on the `data`
+/// pointer of a properly constructed [`RawWaker`] object from inside the
+/// [`RawWaker`] implementation. Calling one of the contained functions using
+/// any other `data` pointer will cause undefined behavior.
 #[derive(PartialEq, Copy, Clone, Debug)]
 pub struct RawWakerVTable {
     /// This function will be called when the [`RawWaker`] gets cloned, e.g. when