/ console / types / string / src / bitwise.rs
bitwise.rs
 1  // Copyright (c) 2025 ADnet Contributors
 2  // This file is part of the AlphaVM library.
 3  
 4  // Licensed under the Apache License, Version 2.0 (the "License");
 5  // you may not use this file except in compliance with the License.
 6  // You may obtain a copy of the License at:
 7  
 8  // http://www.apache.org/licenses/LICENSE-2.0
 9  
10  // Unless required by applicable law or agreed to in writing, software
11  // distributed under the License is distributed on an "AS IS" BASIS,
12  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  // See the License for the specific language governing permissions and
14  // limitations under the License.
15  
16  use super::*;
17  
18  impl<E: Environment> Equal for StringType<E> {
19      type Output = Boolean<E>;
20  
21      /// Returns `true` if `self` and `other` are equal.
22      fn is_equal(&self, other: &Self) -> Self::Output {
23          Boolean::new(self == other)
24      }
25  
26      /// Returns `true` if `self` and `other` are *not* equal.
27      fn is_not_equal(&self, other: &Self) -> Self::Output {
28          Boolean::new(self != other)
29      }
30  }
31  
32  impl<E: Environment> Ternary for StringType<E> {
33      type Boolean = Boolean<E>;
34      type Output = Self;
35  
36      /// Returns `first` if `condition` is `true`, otherwise returns `second`.
37      fn ternary(condition: &Self::Boolean, first: &Self, second: &Self) -> Self::Output {
38          match **condition {
39              true => first.clone(),
40              false => second.clone(),
41          }
42      }
43  }