How to declare a function argument that can accept any type in Rust

2 Answers

0 votes
enum AnyType {
    Int(i32),
    Float(f64),
    Str(String),
    Bool(bool),
    Char(char),
}

fn accept_any_type(x: AnyType) {
    match x {
        AnyType::Int(v) => println!("int: {}", v),
        AnyType::Float(v) => println!("float: {}", v),
        AnyType::Str(v) => println!("string: {}", v),
        AnyType::Bool(v) => println!("bool: {}", v),
        AnyType::Char(v) => println!("char: {}", v),
    }
}

fn main() {
    accept_any_type(AnyType::Int(4623));
    accept_any_type(AnyType::Float(3.14));
    accept_any_type(AnyType::Str("ABCD".to_string()));
    accept_any_type(AnyType::Bool(true));
    accept_any_type(AnyType::Char('A'));
}



    
/*
run:

int: 4623
float: 3.14
string: ABCD
bool: true
char: A
   
*/
  
 

 



answered Aug 1, 2025 by avibootz
0 votes
use std::any::Any;

fn accept_any_type(x: Box<dyn Any>) {
    if let Some(v) = x.downcast_ref::<i32>() {
        println!("int: {}", v);
    } else if let Some(v) = x.downcast_ref::<f64>() {
        println!("float: {}", v);
    } else if let Some(v) = x.downcast_ref::<String>() {
        println!("string: {}", v);
    } else if let Some(v) = x.downcast_ref::<bool>() {
        println!("bool: {}", v);
    } else if let Some(v) = x.downcast_ref::<char>() {
        println!("char: {}", v);
    } else {
        println!("unknown type");
    }
}

fn main() {
    accept_any_type(Box::new(8439));
    accept_any_type(Box::new(3.14));
    accept_any_type(Box::new("ABCD".to_string()));
    accept_any_type(Box::new(true));
    accept_any_type(Box::new('A'));
}



    
/*
run:

int: 8439
float: 3.14
string: ABCD
bool: true
char: A
   
*/
  
 

 



answered Aug 1, 2025 by avibootz
...