rocketmq_model/common/filter/op.rs
1// Copyright 2023 The RocketMQ Rust Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14pub trait Op: Send + Sync {
15 fn symbol(&self) -> &str;
16}
17
18#[derive(Debug, Clone)]
19pub struct OpBase {
20 symbol: String,
21}
22
23impl OpBase {
24 pub fn new(symbol: impl Into<String>) -> Self {
25 Self { symbol: symbol.into() }
26 }
27 pub fn symbol(&self) -> &str {
28 &self.symbol
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use crate::common::filter::op::OpBase;
35
36 #[test]
37 fn create_new_op_base() {
38 let op = OpBase::new("+");
39 assert_eq!(op.symbol(), "+");
40 }
41}