pub fn enter() -> Result<Enter, EnterError> {
    ENTERED.with(|c| {
        if c.get() {
            Err(EnterError { _priv: () })
        } else {
            c.set(true);

            Ok(Enter { _priv: () })
        }
    })
}
Marks the current thread as being within the dynamic extent of an
executor.

Executor implementations should call this function before beginning to
execute a task, and drop the returned [`Enter`](Enter) value after
completing task execution:

```
use futures::executor::enter;

let enter = enter().expect("...");
/* run task */
drop(enter);
```

Doing so ensures that executors aren't
accidentally invoked in a nested fashion.

# Error

Returns an error if the current thread is already marked, in which case the
caller should panic with a tailored error message.
futures-executor/src/enter.rs