in types/src/task_state.rs [565:574]
fn from(mut task: Task<$cur>) -> TaskState {
if <Task<$cur> as TryTransitionTo<Task<$next>>>::ready_for_transition(&task) {
// We assume that if it's ready for transistion, the result is always Ok.
let mut nt: Task<$next> = task.try_transition_to().unwrap();
nt.state.status = nt.extra.into();
return nt.state;
}
task.state.status = task.extra.into();
task.state
}