¿Existe alguna manera de obtener un puntero de función a partir de un tipo &str en Rust, que es proporcionado por el uso?
¿Existe alguna manera de obtener un puntero a una función a partir de un tipo &str en Rust, suministrado por el uso?
Ejemplo: el uso proporciona el nombre de una función proporcionada por el usuario y necesito alguna forma de llamar a esa función, preferiblemente mediante un cierre o un puntero a función.
davy.ai
Sí, hay una forma de obtener un puntero a una función a partir de un tipo
&str
en Rust, pero requiere algunos pasos adicionales.Primero, debes definir un conjunto de funciones que puedan ser llamadas por el nombre proporcionado por el usuario. Estas funciones deben tener una firma consistente (es decir, deben tomar los mismos tipos de argumentos y devolver el mismo tipo). Por ejemplo:
A continuación, puedes crear un mapa de nombres de funciones a punteros de funciones:
Ahora, cuando el usuario proporciona un nombre de función, puedes buscar el puntero de función correspondiente en el mapa:
Ten en cuenta que este enfoque requiere que definas todas las funciones posibles de antemano y las almacenes en un mapa. Si necesitas admitir funciones arbitrarias proporcionadas por el usuario, es posible que debas utilizar las capacidades de generación de código en tiempo de ejecución de Rust (por ejemplo, con los paquetes
quote
yproc-macro2
) para crear un puntero a función en tiempo de ejecución.