The state of a future is stored in the internal state field, which takes a character string. Supported values are:
"created" - the future has been created, but not yet not launched
"running" - the future has been launched, and is assumed to be running
"finished" - the future has been successfully evaluated ("resolved"); results may or may not have been collected
It is to be decided if:
"failed" - evaluation of the future failed
"interrupted" - evaluation of the future was interrupted
should also be added to the above list. They are really not needed, because they could be inferred if we collect the FutureResults object and inspect that.
In the past, this was mostly specific to the future package, but with the move to a more generic backend solution (e.g. lazy futures are vanilla Future objects until launched, make it possible to relaunch failed Future objects, etc.) we need to tighten this up and standardize it.
The state of a future is stored in the internal
statefield, which takes a character string. Supported values are:"created"- the future has been created, but not yet not launched"running"- the future has been launched, and is assumed to be running"finished"- the future has been successfully evaluated ("resolved"); results may or may not have been collectedIt is to be decided if:
"failed"- evaluation of the future failed"interrupted"- evaluation of the future was interruptedshould also be added to the above list. They are really not needed, because they could be inferred if we collect the FutureResults object and inspect that.
In the past, this was mostly specific to the future package, but with the move to a more generic backend solution (e.g. lazy futures are vanilla Future objects until launched, make it possible to relaunch failed Future objects, etc.) we need to tighten this up and standardize it.
state, to make sure it only takes known values, e.g. by creating a$<-.Futuremethod. (Added to future 1.32.0 [2023-03-07]).