FWIW, the return value is marked #[must_use], so the compiler does give you a hint that ignoring it is probably not the right thing to do:
fn main() {
std::thread::Thread::spawn(move || {});
}
<anon>:2:5: 2:44 warning: unused result which must be used, #[warn(unused_must_use)] on by default
<anon>:2 std::thread::Thread::spawn(move || {});
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I guess the type could use #[must_use = "..."] to include a custom message in that output and so be more helpful.
(That said, I don’t know the motivation for join-by-default.)