content: {- |
  Copyright  :  (C) 2025     , Martijn Bastiaan
  License    :  BSD2 (see the file LICENSE)
  Maintainer :  QBayLogic B.V. <devops@qbaylogic.com>
  
  Utilities for converting between Clash number types in a non-erroring way. Its
  existence is motivated by the observation that Clash users often need to convert
  between different number types (e.g., @Unsigned@ to @Signed@) and that it is not
  always clear how to do so properly. Two classes are exported:
  
  * 'NumConvert': for conversions that, based on types, are guaranteed to succeed.
  * 'MaybeNumConvert': for conversions that may fail for some values.
  
  As opposed to 'Prelude.fromIntegral', all conversions are translatable to
  synthesizable HDL.
  
  == __Relation to @convertible@__
  Type classes exported here are similar to the @convertible@ package in that it
  aims to facilitate conversions between different types. It is different in three
  ways:
  
   1. It offers no partial functions
   2. All its conversions are translatable to synthesizable HDL
   3. It is focused on (Clash's) number types
  -}
  module Clash.Class.NumConvert (
    NumConvert (..),
    MaybeNumConvert (..),
  ) where
  
  import Clash.Class.NumConvert.Internal.MaybeNumConvert
  import Clash.Class.NumConvert.Internal.NumConvert
  