o que o rendimento como atribuição faz? myVar = (rendimento)

Eu estou familiarizado com o rendimento para retornar um valor graças principalmente aessa questão

mas o que o rendimento faz quando está no lado direito de uma tarefa?

@coroutine
def protocol(target=None):
   while True:
       c = (yield)

def coroutine(func):
    def start(*args,**kwargs):
        cr = func(*args,**kwargs)
        cr.next()
        return cr 
    return start

Eu me deparei com isso, nas amostras de código deeste blog, enquanto pesquisava máquinas de estado e coroutines.