code: def unfold(
      x: Union[ivy.Array, ivy.NativeArray],
      /,
      mode: Optional[int] = 0,
      *,
      out: Optional[ivy.Array] = None,
  ) -> ivy.Array:
      """Return the mode-`mode` unfolding of `tensor` with modes starting at `0`.
  
      Parameters
      ----------
      x
          input tensor to be unfolded
      mode
          indexing starts at 0, therefore mode is in ``range(0, tensor.ndim)``
      out
          optional output array, for writing the result to.
  
      Returns
      -------
      ret
          unfolded_tensor of shape ``(tensor.shape[mode], -1)``
      """
      return ivy.reshape(
          ivy.moveaxis(x, mode, 0), (x.shape[mode], -1), out=out
      )
  
imports: from typing import Optional, Union, Tuple, Iterable, Sequence, Callable, Any, Literal, List
  from numbers import Number
  from functools import partial
  import math
  import ivy
  from ivy.func_wrapper import handle_out_argument, handle_partial_mixed_function, to_native_arrays_and_back, inputs_to_native_shapes, handle_nestable, handle_array_like_without_promotion, handle_view, inputs_to_ivy_arrays, handle_array_function, handle_device, handle_backend_invalid
  from ivy.functional.ivy.general import _numel
  from ivy.utils.backend import current_backend
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 48 for calling a global function with example usage: unfold(mode) and returns: ivy