Description
I came across some confusing error messages while working on https://github.com/AviKav/silicon.ex:
I got ** (ErlangError) Erlang error: :invalid_struct
when I forgot to rename
#[derive(NifStruct)]
#[module = "Silicon.FormatOptions"]
struct FormatOptions {
to
#[derive(NifStruct)]
#[module = "Silicon.Options.Format"]
struct FormatOptions {
I've gotten
** (ErlangError) Erlang error: "Could not decode field :image_options on %FormatOptions{}"
for having the wrong value all the way in image_options.shadow_adder.background
.
%FormatOptions{}
was a red herring since I thought it was an Elixir struct's old name that was hanging around for some reason, when it actuality it was a Rust type.
I think these error messages should be specific of where or what the issue is.
As of current I'd need to provide the user with a validation function in order to give useful error information.
This is a third place, in addition to typespecs and Rust types, where I'd need to maintain type information.
Unless something like https://github.com/Qqwy/elixir-type_check is used.