The current implementation of Arrow forces the users to pass a reference to the append_value methods of StringBuilder/BinaryBuilder. Whereas it is passed by value for other types of builders. This patch suggests adding impl AsRef<[u8]> rather than the current &[u8] parameter.
Some background for this issue: I have a Rust derive macro which converts the specified struct to Arrow data. This macro assumes everything is passed by value to Arrow, hence the dilemma.