# Module :: reflect_tools
Runtime type reflection system providing traits, descriptors, and utilities for dynamic inspection of Rust types. Enables introspection of type names, sizes, elements, and structure at runtime without compile-time knowledge of the concrete type.
<!--{ generate.module_header.start() }-->
[](https://github.com/emersion/stability-badges#experimental) [](https://github.com/Wandalen/wTools/actions/workflows/workspace_push.yml) [](https://docs.rs/reflect_tools) [](https://gitpod.io/#RUN_PATH=.,SAMPLE_FILE=module%2Fexperimental%2Freflect_tools%2Fexamples%2Freflect_tools_trivial.rs,RUN_POSTFIX=--example%20reflect_tools_trivial/https://github.com/Wandalen/wTools) [](https://discord.gg/m3YfbXpUUY)
<!--{ generate.module_header.end }-->
### Basic use-case
<!-- {{# generate.module{} #}} -->
```rust
use reflect_tools::*;
let value = vec![ 1i32, 2, 3 ];
let entity = reflect( &value );
println!( "{}", entity.type_name() ); // "Vec"
println!( "{}", entity.len() ); // 3
println!( "{}", entity.is_container() ); // true
for kv in entity.elements()
{
println!( "{:?}", kv );
}
```
### To add to your project
```sh
cargo add reflect_tools
```
### Try out from the repository
```sh
git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/reflect_tools_trivial
cargo run
```