1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 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. 14 */ 15 16 //! attribute_macro example for Rust. 17 18 extern crate attribute_macro; 19 use attribute_macro::show_streams; 20 21 // Example: Basic function 22 #[show_streams] invoke1()23fn invoke1() {} 24 // out: attr: "" 25 // out: item: "fn invoke1() { }" 26 27 // Example: Attribute with input 28 #[show_streams(bar)] invoke2()29fn invoke2() {} 30 // out: attr: "bar" 31 // out: item: "fn invoke2() {}" 32 33 // Example: Multiple tokens in the input 34 #[show_streams(multiple => tokens)] invoke3()35fn invoke3() {} 36 // out: attr: "multiple => tokens" 37 // out: item: "fn invoke3() {}" 38 39 // Example: 40 #[show_streams { delimiters }] invoke4()41fn invoke4() {} 42 // out: attr: "delimiters" 43 // out: item: "fn invoke4() {}" 44 main()45fn main() { 46 invoke1(); 47 invoke2(); 48 invoke3(); 49 invoke4(); 50 } 51