How can i do instance of

Hey rust master

i have a quick question that i am wondering how to do it in rust

i have a function that checks if a user exists, like this

    /// Check if user exists or not.
    /// # Arguments
    /// * `value` - can be: username | email | uid
    pub fn exists(value: &str) -> bool {
        use crate::schema::users::dsl::*;

        let conn = db::pg_connection();
        let filter = users.filter(username.eq(&value))
            .or_filter(uid.eq(value));                    // <= error


where value can be &str or uuid::Uuid i know that there is generics in rust, but wondering how can i check if type belongs to Uuid and not &str

is there a way in rust, like instanceof in php, if not how can i achieve the behavior i want using rust?

If you want the function to accept values of Uuid as well, you could make an enum and take that:

enum Value<'a> {
    Str(&'a str),

pub fn exists<'a>(value: Value<'a>) -> bool {
    let conn = db::pg_connection();
    match value {
        Str(s) => ...  // s is a &str
        Uuid(u) => ...  // uuid is a Uuid

You could also implement From<&str> and From<Uuid> for Value, then make exists take a generic V: Into<Value>, so that you can call exists directly with either a &str or Uuid. It really depends on how you're calling this exists function, though.


@asymmetrikon thank you for your response :slight_smile:

this is how i intend to call exists

    fn one() {

        let user: User = FakeUser::one();
        let exists = User::exists(&user.username);


Rust doesn't have function overloading. The recommended approach is to simply make three functions as such:


You could have a fourth internal method to avoid repeating yourself, that each of the three above then call.