getting warning: implicit declaration of function ‘find_rule’
Rule *parse_file(FILE *fp) {
    // initializing
    char line[MAXLINE];
    Rule *first_rule;
    first_rule = malloc(sizeof(Rule));
    if (first_rule == NULL) {
        perror("malloc");
        exit(1);
    }

    // iterating through the entire makefile
    while (fgets(line, MAXLINE, fp) != NULL) {
        if (is_comment_or_empty(line) == 1) {  // line starts with '#' or ' '
            continue;
        }

        // it starts getting serious here
        else {
            // initializing global variables that are used in both branches
            Rule *curr_rule;
            curr_rule = malloc(sizeof(Rule));
            if (curr_rule == NULL) {
                perror("malloc");
                exit(1);
            }
            const char delimiter = ' ';

            // tokenize target
            char *target;
            target = strtok(line, &delimiter);

            // want to initialize target and dependencies before actions
            if (line[0] != '\t') {
                // rule struct has not been added to first_rule
                if (find_rule(first_rule, target) == NULL) {
                    // curr_rule = malloc(sizeof(Rule));
                    // if (curr_rule == NULL) {
                    //     perror("malloc");
                    //     exit(1);
                    // }
                    strncpy(curr_rule->target, target, MAXLINE);
                    insert_rule(first_rule, curr_rule);
                } 


Rule *find_rule(Rule *first_rule, char *target) {
    while (first_rule->next_rule != NULL) {
        if (strcmp(first_rule->target, target) == 0) {
            return first_rule;
        }
    }
    return NULL;