<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_source_contents(self, src_id):
 """Given a source ID this returns the embedded sourcecode if there is. The sourcecode is returned as UTF-8 bytes for more efficient processing. """

        len_out = _ffi.new('unsigned int *')
        must_free = _ffi.new('int *')
        rv = rustcall(_lib.lsm_view_get_source_contents,
                      self._get_ptr(), src_id, len_out, must_free)
        if rv:
            try:
                return _ffi.unpack(rv, len_out[0])
            finally:
                if must_free[0]:
                    _lib.lsm_buffer_free(rv)