@@ -180,8 +180,33 @@ pub use self::local::{LocalKey, LocalKeyState};
180180// Builder
181181////////////////////////////////////////////////////////////////////////////////
182182
183- /// Thread configuration. Provides detailed control over the properties
184- /// and behavior of new threads.
183+ /// Thread factory, which can be used in order to configure the properties of
184+ /// a new thread.
185+ ///
186+ /// Methods can be chained on it in order to configure it.
187+ ///
188+ /// The two configurations available are:
189+ ///
190+ /// - [`name`]: allows to give a name to the thread which is currently
191+ /// only used in `panic` messages.
192+ /// - [`stack_size`]: specifies the desired stack size. Note that this can
193+ /// be overriden by the OS.
194+ ///
195+ /// If the [`stack_size`] field is not specified, the stack size
196+ /// will be the `RUST_MIN_STACK` environment variable. If it is
197+ /// not specified either, a sensible default will be set.
198+ ///
199+ /// If the [`name`] field is not specified, the thread will not be named.
200+ ///
201+ /// The [`spawn`] method will take ownership of the builder and create an
202+ /// [`io::Result`] to the thread handle with the given configuration.
203+ ///
204+ /// The [`thread::spawn`] free function uses a `Builder` with default
205+ /// configuration and [`unwrap`]s its return value.
206+ ///
207+ /// You may want to use [`spawn`] instead of [`thread::spawn`], when you want
208+ /// to recover from a failure to launch a thread, indeed the free function will
209+ /// panick where the `Builder` method will return a [`io::Result`].
185210///
186211/// # Examples
187212///
@@ -196,6 +221,13 @@ pub use self::local::{LocalKey, LocalKeyState};
196221///
197222/// handler.join().unwrap();
198223/// ```
224+ ///
225+ /// [`thread::spawn`]: ../../std/thread/fn.spawn.html
226+ /// [`stack_size`]: ../../std/thread/struct.Builder.html#method.stack_size
227+ /// [`name`]: ../../std/thread/struct.Builder.html#method.name
228+ /// [`spawn`]: ../../std/thread/struct.Builder.html#method.spawn
229+ /// [`io::Result`]: ../../std/io/type.Result.html
230+ /// [`unwrap`]: ../../std/result/enum.Result.html#method.unwrap
199231#[ stable( feature = "rust1" , since = "1.0.0" ) ]
200232#[ derive( Debug ) ]
201233pub struct Builder {
@@ -209,11 +241,6 @@ impl Builder {
209241 /// Generates the base configuration for spawning a thread, from which
210242 /// configuration methods can be chained.
211243 ///
212- /// If the [`stack_size`] field is not specified, the stack size
213- /// will be the `RUST_MIN_STACK` environment variable. If it is
214- /// not specified either, a sensible default will be set (2MB as
215- /// of the writting of this doc).
216- ///
217244 /// # Examples
218245 ///
219246 /// ```
@@ -229,8 +256,6 @@ impl Builder {
229256 ///
230257 /// handler.join().unwrap();
231258 /// ```
232- ///
233- /// [`stack_size`]: ../../std/thread/struct.Builder.html#method.stack_size
234259 #[ stable( feature = "rust1" , since = "1.0.0" ) ]
235260 pub fn new ( ) -> Builder {
236261 Builder {
@@ -280,9 +305,10 @@ impl Builder {
280305 self
281306 }
282307
283- /// Spawns a new thread, and returns a join handle for it.
308+ /// Spawns a new thread by taking ownership of the `Builder`, and returns an
309+ /// [`io::Result`] to its [`JoinHandle`].
284310 ///
285- /// The child thread may outlive the parent (unless the parent thread
311+ /// The spawned thread may outlive the caller (unless the caller thread
286312 /// is the main thread; the whole process is terminated when the main
287313 /// thread finishes). The join handle can be used to block on
288314 /// termination of the child thread, including recovering its panics.
@@ -297,6 +323,7 @@ impl Builder {
297323 ///
298324 /// [`spawn`]: ../../std/thread/fn.spawn.html
299325 /// [`io::Result`]: ../../std/io/type.Result.html
326+ /// [`JoinHandle`]: ../../std/thread/struct.JoinHandle.html
300327 ///
301328 /// # Examples
302329 ///
0 commit comments