github.com/alimy/mir/v4@v4.1.0/assert/assert_any.go (about)

     1  // Copyright 2023 Michael Li <alimy@gility.net>. All rights reserved.
     2  // Use of this source code is governed by Apache License 2.0 that
     3  // can be found in the LICENSE file.
     4  
     5  package assert
     6  
     7  // anyTypeAssertor a common type assert for type T
     8  type anyTypeAssertor[T any] struct{}
     9  
    10  // anyTypeAssertor2 a common type assert for type B(Binding) and R(Render)
    11  type anyTypeAssertor2[B, R any] struct{}
    12  
    13  // anyTypeAssertor3 a common type assert for type B(Binding)/P(Params) and R(Render)
    14  type anyTypeAssertor3[B, P, R any] struct{}
    15  
    16  // anyTypeAssertor4 a common type assert for type C and T
    17  type anyTypeAssertor4[C, T any] struct{}
    18  
    19  func (anyTypeAssertor[T]) AssertBinding(obj any) bool {
    20  	_, ok := obj.(Binding[T])
    21  	return ok
    22  }
    23  
    24  func (anyTypeAssertor[T]) AssertRender(obj any) bool {
    25  	_, ok := obj.(Render[T])
    26  	return ok
    27  }
    28  
    29  func (anyTypeAssertor2[B, R]) AssertBinding(obj any) bool {
    30  	_, ok := obj.(Binding[B])
    31  	return ok
    32  }
    33  
    34  func (anyTypeAssertor2[B, R]) AssertRender(obj any) bool {
    35  	_, ok := obj.(Render[R])
    36  	return ok
    37  }
    38  
    39  func (anyTypeAssertor3[B, P, R]) AssertBinding(obj any) bool {
    40  	_, ok := obj.(Binding2[B, P])
    41  	return ok
    42  }
    43  
    44  func (anyTypeAssertor3[B, P, R]) AssertRender(obj any) bool {
    45  	_, ok := obj.(Render[R])
    46  	return ok
    47  }
    48  
    49  func (anyTypeAssertor4[C, T]) AssertBinding(obj any) bool {
    50  	_, ok := obj.(Binding2[C, T])
    51  	return ok
    52  }
    53  
    54  func (anyTypeAssertor4[C, T]) AssertRender(obj any) bool {
    55  	_, ok := obj.(Render2[C, T])
    56  	return ok
    57  }