1#![forbid(unsafe_code)]
2#![warn(clippy::all, clippy::pedantic)]
3
4mod accuracy;
5#[cfg(feature = "scan")]
6mod block;
7mod canonical;
8mod cluster;
9mod config;
10mod detector;
11mod error;
12mod fast_hash;
13mod fingerprint;
14#[cfg(feature = "scan")]
15mod fragment;
16mod index;
17mod model;
18pub mod output;
19#[cfg(feature = "scan")]
20mod repository;
21mod token;
22mod verify;
23
24pub use accuracy::{AccuracyCounts, AccuracyGate, AccuracyReport, OracleLocation, OraclePair};
25pub use config::CloneConfig;
26pub use detector::CloneDetector;
27pub use error::{CloneError, Result};
28pub use model::{
29 CloneEvidence, CloneFamily, CloneKind, CloneLocation, ClonePair, CloneReport, CloneStatistics,
30 DetectionMode, Language, Similarity, SourceFragment, SourceSpan,
31};
32#[cfg(feature = "scan")]
33pub use repository::{RepositoryCloneDetector, RepositoryOptions};
34
35pub trait SemanticCandidateProvider {
41 fn candidates(&self, fragment: &SourceFragment, limit: usize) -> Result<Vec<String>>;
48}