Mensagem de erro
Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.
A história
Você leu, dentro de uma função aninhada, um valor que pertence à função de fora, e o motor recusou. Vamos entender. Isso se chama closure: a função interna captura, em segredo, um valor da função externa. O rush não permite, porque estado capturado em silêncio é acoplamento escondido: quem lê a função interna não vê de onde o valor veio. Uma função declarada dentro de outra enxerga seus próprios parâmetros e valores, e o módulo, mas nunca os valores da função que a envolve. Note que o nome existe, está vinculado na função de fora. Por isso o erro não diz que o nome não foi encontrado: ele diz o que realmente aconteceu. Exemplo: dentro da função externa você define total, e a função interna usa total sem receber. A correção é direta: passe o valor como argumento da função interna. Assim, quem lê a chamada vê exatamente quais dados entram, e nada viaja escondido.
Texto do catálogo de erros do motor do Rush.
