Pgx_valueSourceinclude Pgx_value_intf.Sv is opaque because the exact contents depend on Postgres types, so you could have two v's with the same value but different internal data representation, for example if you did a SELECT 'a'::bytea vs SELECT 'a'::varchar, the internal representation will be different, but the actual data if you use to_binary or to_string will be the same.
convert_failure type_ str raises Convert_failure with a useful error message. Add ~hint if there's additional info you can give the user about the error.