ruwebframe 0.1.4

a simple webframe for rust actix-web, based on rudi and rbatis.
Documentation
use syn::visit::Visit;
use crate::rudi::difactroy::ruast::{ruast, RuAst};
#[allow(dead_code)]
fn getCode() -> &'static str {
    r#"
        trait BaseEntity { fn id(&self) -> u64; }
        trait BaseEntitySingle { fn id(&self) -> u64; }

        struct User { id: u64 }
        struct Order { id: u64 }

        impl BaseEntity for User {
            fn id(&self) -> u64 { self.id }
        }
        impl BaseEntitySingle for User {
            fn id(&self) -> u64 { self.id }
        }

        // 这个不是 BaseEntity
        impl Clone for Order {
            fn clone(&self) -> Self { todo!() }
        }

        mod inner {
            use super::BaseEntity;
            struct Admin;
            impl BaseEntity for Admin {
                fn id(&self) -> u64 { 0 }
            }
        }
    "#
}

#[test]
fn find01_base_entity() {
    let ast = RuAst::parse_file_content( getCode()).expect("parse failed");
    let ra = RuAst::new();
    // 方法1:简单遍历(只查顶层 items)
    let found = ra.find_base_entity(&ast);
    println!("简单遍历找到: {:?}", found); // ["User"]

    // 方法2:Visitor(递归查所有层级)
    let mut visitor =  ruast::BaseEntityImplVisitor { results: vec![] };
    visitor.visit_file(&ast);
    println!("Visitor 找到: {:?}", visitor.results); // ["User", "Admin"]
    let mut found1 = ra.find_base_entity(&ast);
    println!("简单遍历找到:baseentity {:?}", found);

    let found2 = ra.find_base_entity_single(&ast);
    println!("简单遍历找到: baseentitysngle{:?}", found);

    found1.extend(found2);
    println!("简单遍历找到: baseentitysngle-all{:?}", found1);
}
#[test]
fn find021_base_entity_all() {
    let ast = RuAst::parse_file_content( getCode()).expect("parse failed");
    let ra = RuAst::new();
    // 方法1:简单遍历(只查顶层 items)
    let found = ra.find_base_entity_all(&ast);
    println!("简单遍历找到: {:?}", found);
}