An IEnumerator is just an interface which enables the user to iterate over the object that implements the interface and returns an object for each iteration. Unity uses this interface to implement coroutines. When you use the usual Unity-coroutine-return values you should only use it with StartCoroutine or the actual function is not guaranteed.
If you have a custom IEnumerator, you can iterate over it like PaulR said or use a foreach loop:
foreach(var result in JustTest())
{
// do nothing
}
This will effectively start all 200 sub coroutines (TT) at once.
Actually there’s not much magic behind a generator function (function that uses yield).
Just an example:
IEnumerator Test()
{
yield return "Hello";
yield return "World";
yield return "!!!";
}
foreach(string S in Test())
{
Debug.Log(S);
}
This will print 3 lines
Hello
World
!!!
Whenever you use StartCoroutine, Unity will iterate through your “collection” and interpret the returned values how long it should suspend before it continues.
So you can’t influence the behaviour of StartCoroutine.