1/6

A timeout is not a signal and not a thread. It is a future that polls two things and returns whichever finishes first:

loop {
    if let Poll::Ready(v) = poll(&mut work)    { return v; }
    if let Poll::Ready(v) = poll(&mut deadline) { return v; }
}

That is select!, and timeout(d, fut) is the special case where one side is a timer. Nothing is interrupted — the loser is simply dropped, which by the previous lesson is exactly what cancellation is.