I think I had looked somewhere and discovered that `:pointer` and `:buffer_in` behave identically (I think there was a thread that said the type names are overloaded).  I also think that I had an issue at one point trying to use `:buffer_out` in a struct.  It's a little fuzzy to be totally honest, but I did initially go off of the cited example.

If you look at the types in the FFI source, it would appear they're all the same basic def.
https://github.com/ffi/ffi/blob/de4535bb1c5b9c0d60449fb16275aba7c0f84cd9/ext/ffi_c/Type.c#L389